1. 程式人生 > >從零開始學 Web 之 CSS3(四)邊框圖片,過渡

從零開始學 Web 之 CSS3(四)邊框圖片,過渡

一、邊框圖片

邊框圖片:就是給邊框加圖片背景

我們之前加的邊框都是純顏色的邊框,那麼我們怎麼給邊框加圖片呢?

原理:把一張圖片分成九宮格的形式,然後一一對應到需要新增邊框的元素上。

並且,新增邊框圖片是以背景的方式新增的,所以會有可能文字覆蓋在邊框的情況,後面也會介紹處理方法。

語法:

/* border-image-source:可以指定邊框圖片的路徑,預設只是填充到容器的四個角點 */
border-image-source: url("../images/border1.png");

/* border-image-slice:設定四個方向上的裁切距離, fill:做內容的內部填充 */
border-image-slice: 27 fill;
/* 如果四個邊框的寬度不同,可以設定4個值*/
border-image-slice: 27 10; /*左右27 上下10*/
border-image-slice: 27 20 15 5 fill; /*左27 下20 右15 上5*/

/*border-image-width:邊框圖片的寬度。如果沒有設定這個屬性,那麼寬度預設就是元素的原始的邊框寬度。
細節:
1.邊框圖片的本質是背景,並不會影響元素內容的放置  
2.內容只會被容器的border和padding影響
建議:一般將值設定為原始的邊框的寬度*/
border-image-width: 27px;

/*border-image-outset:擴充套件邊框:將邊框擴大,但是會影響元素的大小,box-sizing也不可挽回,建議不使用。*/
border-image-outset: 0px;

/*border-image-repeat:
repeat:直接重複平鋪,可能有不完整的影象
round:將內容縮放進行完整的重複平鋪
stretch:將內容拉伸(此為預設值)*/
border-image-repeat: round;

以上的內容可以連寫(注意有的屬性需要用 / 分隔):

/*border-image: source slice / width / outset repeat;*/
border-image: url("../images/border1.png") 27 fill / 27px / 0px round;

案例:QQ氣泡

我們在發QQ訊息的時候,可以選擇很多不同的氣泡樣式,而且當我們發訊息的時候,不管文字的多少,氣泡邊框的樣式不變,而只是中間內容的填充。如果只是簡單的氣泡拉伸的話,邊角就會變得醜陋,所以就需要用到邊框圖片的技術。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        div{
            width: 100px;
            height: auto;
            margin:10px auto;
            border: 20px solid red;
            border-image: url("./images/timg.jpg");
            border-image-slice: 20 fill;
            border-image-width: 20px;
            border-image-outset: 0px;
            border-image-repeat: stretch;
        }
    </style>
</head>
<body>
    <div>你好,在麼?</div>
    <div>在的</div>
</body>
</html>

二、過渡

通過過渡 transition,我們可以在不使用 Flash 動畫或 JavaScript 的情況下,當元素從一種樣式變換為另一種樣式時為元素新增效果。

要實現這一點,必須規定兩項內容:

  • 1.規定希望把效果新增到哪個 CSS 屬性上;

  • 2.規定效果的時長。

1、基本語法

/*1.transition-property:新增過渡效果的樣式屬性名稱*/
transition-property: left;

/*2.transition-duration:過渡效果的耗時 以秒做為單位*/
transition-duration: 2s;

/*3.transition-timing-function:設定時間函式--控制運動的速度*/
transition-timing-function: linear;
/*
引數說明:
steps(n):n代表次數,就是動畫分幾次走完。(比如秒針的走動)
linear:規定以相同速度開始至結束的過渡效果。
ease:規定慢速開始,然後變快,然後慢速結束的過渡效果。
ease-in:規定以慢速開始的過渡效果。
ease-out:規定以慢速結束的過渡效果。
ease-in-out:規定以慢速開始和結束的過渡效果。
*/

/*4.transition-delay:過渡效果的延遲,間隔多少時間後才開始動畫。*/
transition-delay: 2s;

注意:新增過渡效果:過渡效果執行完畢之後,預設會還原到原始狀態。

2、連寫樣式

transition: property duration timing-function delay;

引數說明:

property:屬性名稱

duration:過渡時間

timing-function:時間函式

delay:延遲時間

為多個樣式同時新增過渡效果:(之間用逗號隔開)

transition: left 2s linear 0s,
            background-color 5s linear 0s;

為所有樣式新增過渡效果:all:所有樣式

transition:all 2s steps(4);

缺點:

  1. 所有樣式的過渡效果一樣。
  2. 效率低下,它會去查詢所有新增的樣式。
  3. 建議不要這麼寫。

3、使用建議

因為 transition 最早是有由 webkit 核心瀏覽器提出來的,mozilla 和 opera 都是最近版本才支援這個屬性,而我們的大眾型瀏覽器 IE 全家都是不支援,另外由於各大現代瀏覽器 Firefox,Safari,Chrome,Opera 都還不支援 W3C的標準寫法,所以在應用 transition 時我們有必要加上各自的字首,最好在最後寫上我們 W3C 的標準寫法,這樣支援標準寫法的瀏覽器會覆蓋前面的寫法,只要瀏覽器支援我們的 transition 屬性,那麼這種效果就會自動加上去,如:

-moz-transition: all 1s ease;
-webkit-transition: all 1s ease;
-o-transition: all 1s ease;
transition: all 1s ease; /*放在最後*/

4、案例:手風琴效果

效果:滑鼠放在每個標籤上,會慢慢下拉出詳細內容。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        .menu {
            width: 200px;
            height: auto;
            margin: 100px auto;
        }
        .item {
            width: 100%;
            height: auto;
        }
        .item > h3 {
            height: 40px;
            line-height: 40px;
            background-color: rgb(146, 210, 226);
            padding: 5px 0 5px 10px;
            border-bottom: 2px solid #ccc;
        }
        .item > .itemBox {
            width: 100%;
            height: 0;
            background-color: rgb(248, 187, 233);
            overflow: hidden;
        }
        .itemBox > ul {
            list-style: none;
            padding: 10px 10px;
        }
        .item:hover > .itemBox {
            height: 110px;
            transition: height 0.5s;
        }
    </style>
</head>
<body>
    <div class="menu">
        <div class="item">
            <h3>市內新聞</h3>
            <div class="itemBox">
                <ul>
                    <li>深圳超市肉菜檔遭搶</li>
                    <li>深圳超市肉菜檔遭搶</li>
                    <li>深圳超市肉菜檔遭搶</li>
                    <li>深圳超市肉菜檔遭搶</li>
                </ul>
            </div>
        </div>
        <div class="item">
            <h3>省內新聞</h3>
            <div class="itemBox">
                <ul>
                    <li>深圳超市肉菜檔遭搶</li>
                    <li>深圳超市肉菜檔遭搶</li>
                    <li>深圳超市肉菜檔遭搶</li>
                    <li>深圳超市肉菜檔遭搶</li>
                </ul>
            </div>
        </div>
        <div class="item">
            <h3>國內新聞</h3>
            <div class="itemBox">
                <ul>
                    <li>深圳超市肉菜檔遭搶</li>
                    <li>深圳超市肉菜檔遭搶</li>
                    <li>深圳超市肉菜檔遭搶</li>
                    <li>深圳超市肉菜檔遭搶</li>
                </ul>
            </div>
        </div>
        <div class="item">
            <h3>國際新聞</h3>
            <div class="itemBox">
                <ul>
                    <li>深圳超市肉菜檔遭搶</li>
                    <li>深圳超市肉菜檔遭搶</li>
                    <li>深圳超市肉菜檔遭搶</li>
                    <li>深圳超市肉菜檔遭搶</li>
                </ul>
            </div>
        </div>
    </div>
</body>
</html>

相關推薦

開始 Web CSS3邊框圖片過渡

一、邊框圖片 邊框圖片:就是給邊框加圖片背景。 我們之前加的邊框都是純顏色的邊框,那麼我們怎麼給邊框加圖片呢? 原理:把一張圖片分成九宮格的形式,然後一一對應到需要新增邊框的元素上。 並且,新增邊框圖片是以背景的方式新增的,所以會有可能文字覆蓋在邊框的情況,後面也會介紹處理方法。 語法: /* bord

開始 Web CSS3顏色模式文字陰影盒模型邊框圓角邊框陰影

一、顏色模式 顏色模式有兩種: RGBA rgba(0,0,0,0.5); //黑色,透明度0.5 HSLA(顏色(0~360),飽和度(0%~100%),明度(0%~100%),透明度(0~1)) 紅橙黃綠青藍紫紅:顏色從 0~360 順序,各佔30度。比如紅色為0,黃色為120,綠色為240。

開始 Web CSS3動畫animationWeb字型

大家好,這裡是「 從零開始學 Web 系列教程 」,並在下列地址同步更新...... github:https://github.com/Daotin/Web 部落格園:http://www.cnblogs.com/lvonve/ CSDN:https://blog.csdn.net/lvonve/

開始 Web CSS3CSS3概述選擇器

https 兼容問題 3.1 線性 web前端 不同 錨點 splay lock 大家好,這裏是「 從零開始學 Web 系列教程 」,並在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公眾號:Web前端之巔

開始 Web CSS3transform

transform transform 字面上就是變形,改變的意思。在CSS3中transform主要包括以下幾種:移動 translate,縮放scale,旋轉rotate,翻轉skew,改變旋轉軸心等。 1、元素的移動:translate 作用:使用transform實現元素的移動 語法: /*使用t

開始 Web CSS3漸變background屬性

一、漸變 漸變是CSS3當中比較豐富多彩的一個特性,通過漸變我們可以實現許多炫麗的效果,有效的減少圖片的使用數量,並且具有很強的適應性和可擴充套件性。可分為線性漸變、徑向漸變。 1、線性漸變 線性漸變:指沿著某條直線朝一個方向產生漸變效果。 語法: background: linear-gradient(

開始 Web CSS3CSS3三個案例

一、CSS3三個案例 1、案例一:攜程網首頁 需求:頁面無橫向滾動條,頁面隨著寬度的改變自動伸縮。 程式碼: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> &l

開始 Web CSS3多列布局伸縮佈局

一、多列布局 CSS3中新出現的多列布局 (multi-column) 是傳統 HTML 網頁中塊狀佈局模式的有力擴充。 這種新語法能夠讓 WEB 開發人員輕鬆的讓文字呈現多列顯示。 我們知道,當一行文字太長時,讀者讀起來就比較費勁,有可能讀錯行或讀序列;人們的視點從文字的一端移到另一端、然後換到下一行的

開始 Web DOM節點

def clas scrip while p標簽 設置 ner 操作 text 大家好,這裏是「 Daotin的夢囈 」從零開始學 Web 系列教程。此文首發於「 Daotin的夢囈 」公眾號,歡迎大家訂閱關註。在這裏我會從 Web 前端零基礎開始,一步步學習 Web 相

開始 Web jQuery事件冒泡事件參數對象鏈式編程原理

eval uri turn 定位 return 也會 否則 ont sele 大家好,這裏是「 從零開始學 Web 系列教程 」,並在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公眾號:Web前端之巔 博客

開始 Web AjaxAjax 概述快速上手

lan 技術分享 php 概述 由於 val asc logs 更新 大家好,這裏是「 從零開始學 Web 系列教程 」,並在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公眾號:Web前端之巔 博客園:ht

開始 Web HTML5表單多媒體新增內容新增獲取操作元素自定義屬性

器) user 對比 style 按鈕 ont mp3 url -- 大家好,這裏是「 從零開始學 Web 系列教程 」,並在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公眾號:Web前端之巔 博客園:ht

開始 Web jQuery元素操作鏈式程式設計動畫方法

一、使用css操作元素樣式 1、常規寫法 $("#dv").css("width", "200px"); $("#dv").css("height", "100px"); $("#dv").css("background", "red"); 2、鏈式寫法 $("#dv").css("width", "20

開始 Web HTML5HTML5概述語義化標籤

一、HTML5簡介 1、什麼是html5 html5 不是一門新的語言,而是我們之前學習的 html 的第五次重大修改版本。 2、html的發展歷史 超文字標記語言(第一版,不叫 HTML 1.0)——在1993年6月作為網際網路工程工作小組(IETF)工作草案發布(並非標準); HTML 2.0——19

開始 Web BOMclient系列

一、client 系列 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style

開始 Web ES6ES6基礎語法二

一、Promise Promise是一個物件,代表了未來某個將要發生的事件(,這個事件通常是一個非同步操作) 有了Promise物件, 可以將非同步操作以同步的流程表達出來, 避免了層層巢狀的回撥函式(俗稱'回撥地獄')。 ES6的Promise是一個建構函式, 用來生成promise例項。 1、prom

開始 Web JavaScript陣列

大家好,這裡是「 Daotin的夢囈 」從零開始學 Web 系列教程。此文首發於「 Daotin的夢囈 」公眾號,歡迎大家訂閱關注。在這裡我會從 Web 前端零基礎開始,一步步學習 Web 相關的知識點,期間也會分享一些好玩的專案。現在就讓我們一起進入 Web 前端學習的冒險之旅吧! 一、陣列 1、陣列

開始 Web jQuery事件冒泡事件引數物件鏈式程式設計原理

一、事件冒泡與阻止事件冒泡 事件冒泡:當一個元素觸發某個事件的時候,會把這個事件傳播到其父元素,一直到頂層元素。 阻止事件冒泡:在被觸發事件的子元素中新增 return false; 即可。 二、事件的觸發 之前講的繫結事件是事件觸發後的事件處理過程,並且上面的事件觸發是被動的事件觸發,怎麼可以主動觸發事

開始 Web Ajax介面文件驗證使用者名稱唯一性案例

>大家好,這裡是「 從零開始學 Web 系列教程 」,並在下列地址同步更新...... > > - github:https://github.com/Daotin/Web > - 微信公眾號:[Web前端之巔](https://github.com/Daotin/pi

開始 Web HTML5拖拽介面Web儲存自定義播放器

>大家好,這裡是「 從零開始學 Web 系列教程 」,並在下列地址同步更新...... > > - github:https://github.com/Daotin/Web > - 微信公眾號:[Web前端之巔](https://github.com/Daotin/pi