深入了解 CSS3 新特性2020-08-26

簡介

CSS 即層疊樣式表(Cascading Stylesheet)。Web 開發中采用 CSS 技術,可以有效地控制頁面的布局、字體、顏色、背景和其它效果。只需要一些簡單的修改,就可以改變網頁的外觀和格式。CSS3 是 CSS 的升級版本,這套新標準提供了更加豐富且實用的規范,如:盒子模型、列表模塊、超鏈接方式、語言模塊、背景和邊框、文字特效、多欄布局等等,目前有很多瀏覽器已經相繼支持這項升級的規范,如:Firefox、Chrome、Safari、Opera 等等。在 Web 開發中采用 CSS3 技術將會顯著的美化我們的應用程序,提高用戶體驗,同時也能極大的提高程序的性能。本文將重點介紹一些比較絢麗且實用 CSS3 新特性。

CSS3 選擇器(Selector)

寫過 CSS 的人應該對 CSS 選擇器不陌生,我們所定義的 CSS 屬性之所以能應用到相應的節點上,就是因為 CSS 選擇器模式。參考下述代碼:

清單 1. CSS 選擇器案例
Body > .mainTabContainer  div  > span[5]{
 Border: 1px solod red;
 Background-color: white;
 Cursor: pointer;
 }

顯示更多

此處的 CSS 選擇器即:”body > .mainTabContainer div span[5]” 代表這這樣一條路徑:

  1. “body”標簽直接子元素里 class 屬性值為”mainTabContainer”的所有元素 A

  2. A 的后代元素(descendant)里標簽為 div 的所有元素 B

  3. B 的直接子元素中的第 5 個標簽為 span 的元素 C

這個 C 元素(可能為多個)即為選擇器定位到的元素,如上的 CSS 屬性也會全部應用到 C 元素上。

以上為 CSS2 及之前版本所提供的主要定位方式。現在,CSS3 提供了更多更加方便快捷的選擇器:

清單 2. CSS3 選擇器案例
Body > .mainTabContainer  tbody:nth-child(even){
 Background-color: white;
 }

 Body > .mainTabContainer  tr:nth-child(odd){
 Background-color: black;
 }

 :not(.textinput){
 Font-size: 12px;
      }

      Div:first-child{
      Border-color: red;
      }

顯示更多

如上所示,我們列舉了一些 CSS3 的選擇器,在我們日常的開發中可能會經常用到,這些新的 CSS3 特性解決了很多我們之前需要用 JavaScript 腳本才能解決的問題。

tbody: nth-child(even), nth-child(odd):此處他們分別代表了表格(tbody)下面的偶數行和奇數行(tr),這種樣式非常適用于表格,讓人能非常清楚的看到表格的行與行之間的差別,讓用戶易于瀏覽。

: not(.textinput):這里即表示所有 class 不是”textinput”的節點。

div:first-child:這里表示所有 div 節點下面的第一個直接子節點。

除此之外,還有很多新添加的選擇器:

E:nth-last-child(n)
 E:nth-of-type(n)
 E:nth-last-of-type(n)
 E:last-child
 E:first-of-type
 E:only-child
 E:only-of-type
 E:empty
 E:checked
 E:enabled
 E:disabled
 E::selection
 E:not(s)

顯示更多

這里不一一介紹。學會利用這些新特性可以極大程度的減少我們的無畏代碼,并且大幅度的提高程序的性能。

@Font-face 特性

Font-face 可以用來加載字體樣式,而且它還能夠加載服務器端的字體文件,讓客戶端顯示客戶端所沒有安裝的字體。

先來看一個客戶端字體簡單的案例:

清單 3. Font-face 客戶端字體案例
<p><font face="arial">arial courier verdana</font></p>

顯示更多

我們可以通過這種方式直接加載字體樣式,因為這些字體(arial)已經安裝在客戶端了。清單 3 這種寫法的作用等同于清單 4:

清單 4. 字體基本寫法
<p><font style="font-family: arial">arial courier verdana</font></p>

顯示更多

相信這種寫法大家應該再熟悉不過了。

接下來我們看看如何使用服務端字體,即:未在客戶端安裝的字體樣式。

參看如下代碼:

清單 5. Font-face 服務端字體案例
@font-face {
 font-family: BorderWeb;
 src:url(BORDERW0.eot);
 }
 @font-face {
 font-family: Runic;
 src:url(RUNICMT0.eot);
 }

 .border { FONT-SIZE: 35px; COLOR: black; FONT-FAMILY: "BorderWeb" }
 .event { FONT-SIZE: 110px; COLOR: black; FONT-FAMILY: "Runic" }

顯示更多

清單 5 中聲明的兩個服務端字體,其字體源指向”BORDERW0.eot”和”RUNICMT0.eot”文件,并分別冠以”BorderWeb”和”Runic”的字體名稱。聲明之后,我們就可以在頁面中使用了:” FONT-FAMILY: “BorderWeb” ” 和 ” FONT-FAMILY: “Runic” ”。

這種做法使得我們在開發中如果需要使用一些特殊字體,而又不確定客戶端是否已安裝時,便可以使用這種方式。

Word-wrap & Text-overflow 樣式

Word-wrap

先來看看 word-wrap 屬性,參考下述代碼:

清單 6. word-wrap 案例
<div style="width:300px; border:1px solid #999999; overflow: hidden">
 wordwrapbreakwordwordwrapbreakwordwordwrapbreakwordwordwrapbreakword
 </div>

 <div style="width:300px; border:1px solid #999999; word-wrap:break-word;">
 wordwrapbreakwordwordwrapbreakwordwordwrapbreakwordwordwrapbreakword
 </div>

顯示更多

比較上述兩段代碼,加入了”word-wrap: break-word”,設置或檢索當當前行超過指定容器的邊界時是否斷開轉行,文字此時已被打散。所以可見如下的差別:

圖 1. 沒有 break-word
圖 1. 沒有 break-word
圖 2. 有 break-word
圖 2. 有 break-word

Text-overflow

知道了 word-wrap 的原理,我們再來看看 text-overflow,其實它與 word-wrap 是協同工作的,word-wrap 設置或檢索當當前行超過指定容器的邊界時是否斷開轉行,而 text-overflow 則設置或檢索當當前行超過指定容器的邊界時如何顯示,見如下示例:

清單 7. Text-overflow 案例
.clip{text-overflow:clip; overflow:hidden; white-space:nowrap;
   width:200px;background:#ccc;}
 .ellipsis{text-overflow:ellipsis; overflow:hidden; white-space:nowrap;
   width:200px; background:#ccc;}

 <div class="clip">
  不顯示省略標記,而是簡單的裁切條
 </div>

 <div class="ellipsis">
  當對象內文本溢出時顯示省略標記
 </div>

顯示更多

如清單 7 所示,這里我們均使用”overflow: hidden”,對于”text-overflow”屬性,有”clip”和”ellipsis”兩種可供選擇。見圖 3 的效果圖。

圖 3. Text-overflow 效果圖
圖 3. Text-overflow 效果圖

這里我們可以看到,ellipsis 的顯示方式比較人性化,clip 方式比較傳統,我們可以依據需求進行選擇。

文字渲染(Text-decoration)

CSS3 里面開始支持對文字的更深層次的渲染,我們來看看下面的例子:

清單 8. Text-decoration 案例
div {
 -webkit-text-fill-color: black;
 -webkit-text-stroke-color: red;
 -webkit-text-stroke-width: 2.75px;
 }

顯示更多

這里我們主要以 webkit 內核瀏覽器為例,清單 8 的代碼效果如圖 4:

圖 4. Text-decoration 效果圖
圖 4. Text-decoration 效果圖

Text-fill-color: 文字內部填充顏色

Text-stroke-color: 文字邊界填充顏色

Text-stroke-width: 文字邊界寬度

CSS3 的多列布局(multi-column layout)

CSS3 現在已經可以做簡單的布局處理了,這個 CSS3 新特性又一次的減少了我們的 JavaScript 代碼量,參考如下代碼:

清單 9. CSS3 多列布局
.multi_column_style{
 -webkit-column-count: 3;
 -webkit-column-rule: 1px solid #bbb;
 -webkit-column-gap: 2em;
 }

 <div class="multi_column_style">
 .................
 .................
 </div>

顯示更多

這里我們還是以 webkit 內核瀏覽器為例:

Column-count:表示布局幾列。

Column-rule:表示列與列之間的間隔條的樣式

Column-gap:表示列于列之間的間隔

清單 9 的代碼效果圖如圖 5:

圖 5. 多列布局效果圖
圖 5. 多列布局效果圖

邊框和顏色(color, border)

關于顏色,CSS3 已經提供透明度的支持了:

清單 10. 顏色的透明度
color: rgba(255, 0, 0, 0.75);
 background: rgba(0, 0, 255, 0.75);

顯示更多

這里的”rgba”屬性中的”a”代表透明度,也就是這里的”0.75”,同時 CSS3 還支持 HSL 顏色聲明方式及其透明度:

清單 11. HSL 的透明度
color: hsla( 112, 72%, 33%, 0.68);

顯示更多

對于 border,CSS3 提供了圓角的支持:

清單 12. 圓角案例
border-radius: 15px;

顯示更多

參見下面圓角效果:

Figure xxx. Requires a heading
Figure xxx. Requires a heading

CSS3 的漸變效果(Gradient)

線性漸變

左上(0% 0%)到右上(0% 100%)即從左到右水平漸變:

清單 13. 左到右的漸變
background-image:-webkit-gradient(linear,0% 0%,100% 0%,from(#2A8BBE),to(#FE280E));

顯示更多

這里 linear 表示線性漸變,從左到右,由藍色(#2A8BBE)到紅色(#FE280E)的漸變。效果圖如下:

圖 6. 簡單線性漸變效果圖
圖 6. 簡單線性漸變效果圖

同理,也可以有從上到下,任何顏色間的漸變轉換:

圖 7. 各種不同線性漸變效果圖
圖 7. 各種不同線性漸變效果圖

還有復雜一點的漸變,如:水平漸變,33% 處為綠色,66% 處為橙色:

清單 14. 復雜線性漸變
background-image:-webkit-gradient(linear,0% 0%,100% 0%,from(#2A8BBE),
        color-stop(0.33,#AAD010),color-stop(0.33,#FF7F00),to(#FE280E));

顯示更多

這里的”color-stop”為拐點,可見效果圖:

圖 8. 復雜線性漸變效果圖
圖 8. 復雜線性漸變效果圖

徑向漸變

接下來我們要介紹徑向漸變(radial),這不是從一個點到一個點的漸變,而從一個圓到一個圓的漸變。不是放射漸變而是徑向漸變。來看一個例子:

清單 15. 徑向漸變(目標圓半徑為 0)
backgroud:
 -webkit-gradient(radial,50 50,50,50 50,0,from(black),color-stop(0.5,red),to(blue));

顯示更多

前面”50,50,50”是起始圓的圓心坐標和半徑,”50,50,0”藍色是目標圓的圓心坐標和半徑,”color-stop(0.5,red)”是斷點的位置和色彩。這里需要說明一下,和放射由內至外不一樣,徑向漸變剛好相反,是由外到內的漸變。清單 15 標識的是兩個同心圓,外圓半徑為 50px,內圓半徑為 0,那么就是從黑色到紅色再到藍色的正圓形漸變。下面就是這段代碼的效果:

圖 9. 徑向漸變(目標圓半徑為 0)效果圖
圖 9. 徑向漸變(目標圓半徑為 0)效果圖

如果我們給目標源一個大于 0 半徑,您會看到另外一個效果:

清單 16. 徑向漸變(目標圓半徑非 0)
backgroud:
 -webkit-gradient(radial,50 50,50,50 50,10,from(black),color-stop(0.5,red),to(blue));

顯示更多

這里我們給目標圓半徑為 10,效果圖如下:

圖 10. 徑向漸變(目標圓半徑非 0)
圖 10. 徑向漸變(目標圓半徑非 0)

您可以看到,會有一個半徑為 10 的純藍的圓在最中間,這就是設置目標圓半徑的效果。

現在我再改變一下,不再是同心圓了,內圓圓心向右 20px 偏移。

清單 17. 徑向漸變(目標圓圓心偏移)
backgroud:
 -webkit-gradient(radial,50 50,50,70 50,10,from(black),color-stop(0.5,red),to(blue));

顯示更多

這里我們給目標圓半徑還是 10,但是圓心偏移為”70,50”(起始圓圓心為”50,50”)效果圖如下:

圖 11. 徑向漸變(目標圓圓心偏移)
圖 11. 徑向漸變(目標圓圓心偏移)

想必您明白原理了,我們可以做一個來自頂部的漫射光,類似于開了盞燈:

清單 18. 徑向漸變(漫射光)
backgroud:-webkit-gradient(radial,50 50,50,50 1,0,from(black),to(white));

顯示更多

其效果如下:

圖 12. 徑向漸變(漫射光)
圖 12. 徑向漸變(漫射光)

CSS3 的陰影(Shadow)和反射(Reflect)效果

首先來說說陰影效果,陰影效果既可用于普通元素,也可用于文字,參考如下代碼:

清單 19. 元素和文字的陰影
.class1{
 text-shadow:5px 2px 6px rgba(64, 64, 64, 0.5);
 }

 .class2{
 box-shadow:3px 3px 3px rgba(0, 64, 128, 0.3);
 }

顯示更多

設置很簡單,對于文字陰影:表示 X 軸方向陰影向右 5px,Y 軸方向陰影向下 2px, 而陰影模糊半徑 6px,顏色為 rgba(64, 64, 64, 0.5)。其中偏移量可以為負值,負值則反方向。元素陰影也類似。參考一下效果圖:

圖 13. 元素和文字的陰影效果圖
元素和文字的陰影效果圖

圖 13. 元素和文字的陰影效果圖

接下來我們再來談談反射,他看起來像水中的倒影,其設置也很簡單,參考如下代碼:

清單 20. 反射
.classReflect{
 -webkit-box-reflect: below 10px
 -webkit-gradient(linear, left top, left bottom, from(transparent),
      to(rgba(255, 255, 255, 0.51)));
 }

顯示更多

設置也很簡單,大家主要關注”-webkit-box-reflect: below 10px”,他表示反射在元素下方 10px 的地方,再配上漸變效果,可見效果圖如下:

圖 14. 反射效果圖
圖 14. 反射效果圖

CSS3 的背景效果

CSS3 多出了幾種關于背景(background)的屬性,我們這里會簡單介紹一下:

首先:”Background Clip”,該屬確定背景畫區,有以下幾種可能的屬性:

  • background-clip: border-box; 背景從 border 開始顯示 ;

  • background-clip: padding-box; 背景從 padding 開始顯示 ;

  • background-clip: content-box; 背景顯 content 區域開始顯示 ;

  • background-clip: no-clip; 默認屬性,等同于 border-box;

通常情況,我們的背景都是覆蓋整個元素的,現在 CSS3 讓您可以設置是否一定要這樣做。這里您可以設定背景顏色或圖片的覆蓋范圍。

其次:”Background Origin”,用于確定背景的位置,它通常與 background-position 聯合使用,您可以從 border、padding、content 來計算 background-position(就像 background-clip)。

  • background-origin: border-box; 從 border. 開始計算 background-position;

  • background-origin: padding-box; 從 padding. 開始計算 background-position;

  • background-origin: content-box; 從 content. 開始計算 background-position;

還有,”Background Size”,常用來調整背景圖片的大小,注意別和 clip 弄混,這個主要用于設定圖片本身。有以下可能的屬性:

  • background-size: contain; 縮小圖片以適合元素(維持像素長寬比)

  • background-size: cover; 擴展元素以填補元素(維持像素長寬比)

  • background-size: 100px 100px; 縮小圖片至指定的大小 .

  • background-size: 50% 100%; 縮小圖片至指定的大小,百分比是相對包 含元素的尺寸 .

最后,”Background Break”屬性,CSS3 中,元素可以被分成幾個獨立的盒子(如使內聯元素 span 跨越多行),background-break 屬性用來控制背景怎樣在這些不同的盒子中顯示。

  • background-break: continuous; 默認值。忽略盒之間的距離(也就是像元 素沒有分成多個盒子,依然是一個整體一 樣)

  • background-break: bounding-box; 把盒之間的距離計算在內;

  • background-break: each-box; 為每個盒子單獨重繪背景。

這種屬性讓您可以設定復雜元素的背景屬性。

最為重要的一點,CSS3 中支持多背景圖片,參考如下代碼:

清單 21. 多背景圖片
div {
 background: url(src/zippy-plus.png) 10px center no-repeat,
  url(src/gray_lines_bg.png) 10px center repeat-x;
 }

顯示更多

此為同一元素兩個背景的案例,其中一個重復顯示,一個不重復。參考一下效果圖:

圖 15. 多背景圖片
圖 15. 多背景圖片

CSS3 的盒子模型

盒子模型為開發者提供了一種非常靈活的布局方式,但是支持這一特性的瀏覽器并不多,目前只有 webkit 內核的新版本 safari 和 chrome 以及 gecko 內核的新版本 firefox。

下面我們來介紹一下他是如何工作的,參考如下代碼:

清單 22. CSS3 盒子模型
<div class="boxcontainer">
            <div class="item">
                1
            </div>
            <div class="item">
                2
            </div>
            <div class="item">
                3
            </div>
            <div class="item flex">
                4
            </div>
        </div>

顯示更多

默認情況下,如果”boxcontainer”和”item”兩個 class 里面沒有特殊屬性的話,由于 div 是塊狀元素,所以他的排列應該是這樣的:

圖 16. CSS3 盒子模型效果圖
圖 16. CSS3 盒子模型效果圖

下面,我們加入相關 CSS3 盒子模型屬性:

清單 23. CSS3 盒子模型(水平排列)
.boxcontainer {
                width: 1000px;
                display: -webkit-box;
                display: -moz-box;
                -webkit-box-orient: horizontal;
                -moz-box-orient: horizontal;
            }

            .item {
                background: #357c96;
                font-weight: bold;
                margin: 2px;
                padding: 20px;
                color: #fff;
                font-family: Arial, sans-serif;
            }

顯示更多

注意這里的”display: -webkit-box; display: -moz-box;”,它針對 webkit 和 gecko 瀏覽器定義了該元素的盒子模型。注意這里的”-webkit-box-orient: horizontal;”,他表示水平排列的盒子模型。此時,我們會看到如下效果:

圖 17. CSS3 盒子模型(水平排列)效果圖
圖 17. CSS3 盒子模型(水平排列)效果圖

細心的讀者會看到,”盒子”的右側多出來了很大一塊,這是怎么回事呢?讓我們再來看一個比較有特點的屬性:”flex”, 參考如下代碼:

清單 24. CSS3 盒子模型(flex)
<div class="boxcontainer">
            <div class="item">
                1
            </div>
            <div class="item">
                2
            </div>
            <div class="item">
                3
            </div>
            <div class="item flex">
                4
            </div>
        </div>

 .flex {
     -webkit-box-flex: 1;
     -moz-box-flex: 1;
 }

顯示更多

您看到什么區別了沒?在第四個”item 元素”那里多了一個”flex”屬性,直接來看看效果吧:

圖 18. CSS3 盒子模型(flex)效果圖
圖 18. CSS3 盒子模型(flex)效果圖

第四個”item 元素”填滿了整個區域,這就是”flex”屬性的作用。如果我們調整一下”box-flex”的屬性值,并加入更多的元素,見如下代碼:

清單 25. CSS3 盒子模型(flex 進階)
<div class="boxcontainer">
            <div class="item">
                1
            </div>
            <div class="item">
                2
            </div>
            <div class="item flex2">
                3
            </div>
            <div class="item flex">
                4
            </div>
        </div>

 .flex {
     -webkit-box-flex: 1;
     -moz-box-flex: 1;
 }

 .flex2 {
     -webkit-box-flex: 2;
     -moz-box-flex: 2;
 }

顯示更多

我們把倒數第二個元素(元素 3)也加上”box-flex”屬性,并將其值設為 2,可見其效果圖如下:

圖 19. CSS3 盒子模型(flex 進階)效果圖
圖 19. CSS3 盒子模型(flex 進階)效果圖

由此可見,元素 3 和元素 4 按比例”2:1”的方式填充外層”容器”的余下區域,這就是”box-flex”屬性的進階應用。

還有,”box-direction”可以用來翻轉這四個盒子的排序,”box-ordinal-group”可以用來改變每個盒子的位置:一個盒子的 box-ordinal-group 屬性值越高,就排在越后面。盒子的對方方式可以用”box-align”和”box-pack”來設定。

CSS3 的 Transitions, Transforms 和 Animation

Transitions

先說說 Transition,Transition 有下面些具體屬性:

transition-property:用于指定過渡的性質,比如 transition-property:backgrond 就是指 backgound 參與這個過渡

transition-duration:用于指定這個過渡的持續時間

transition-delay:用于制定延遲過渡的時間

transition-timing-function:用于指定過渡類型,有 ease | linear | ease-in | ease-out | ease-in-out | cubic-bezier

可能您覺得摸不著頭腦,其實很簡單,我們用一個例子說明,參看一下如下代碼:

清單 26. CSS3 的 Transition
<div id="transDiv" class="transStart"> transition </div>

 .transStart {
    background-color: white;
    -webkit-transition: background-color 0.3s linear;
    -moz-transition: background-color 0.3s linear;
    -o-transition: background-color 0.3s linear;
    transition: background-color 0.3s linear;
 }
 .transEnd {
    background-color: red;
 }

顯示更多

這里他說明的是,這里 id 為”transDiv”的 div,當它的初始”background-color”屬性變化時(被 JavaScript 修改),會呈現出一種變化效果,持續時間為 0.3 秒,效果為均勻變換(linear)。如:該 div 的 class 屬性由”transStart”改為”transEnd”,其背景會由白(white)漸變到紅(red)。

Transform

再來看看 Transform,其實就是指拉伸,壓縮,旋轉,偏移等等一些圖形學里面的基本變換。見如下代碼:

清單 27. CSS3 的 Transform
.skew {
 -webkit-transform: skew(50deg);
 }

 .scale {
 -webkit-transform: scale(2, 0.5);
 }

 .rotate {
 -webkit-transform: rotate(30deg);
 }

 .translate {
 -webkit-transform: translate(50px, 50px);
 }

 .all_in_one_transform {
 -webkit-transform: skew(20deg) scale(1.1, 1.1) rotate(40deg) translate(10px, 15px);
 }

顯示更多

“skew”是傾斜,”scale”是縮放,”rotate”是旋轉,”translate”是平移。最后需要說明一點,transform 支持綜合變換。可見其效果圖如下:

圖 20. CSS3 的 Transform 效果圖
圖 20. CSS3 的 Transform 效果圖

現在您應該明白 Transform 的作用了吧。結合我們之前談到的 Transition,將它們兩者結合起來,會產生類似旋轉,縮放等等的效果,絕對能令人耳目一新。

Animation

最后,我們來說說 Animation 吧。它可以說開辟了 CSS 的新紀元,讓 CSS 脫離了”靜止”這一約定俗成的前提。以 webkit 為例,見如下代碼:

清單 28. CSS3 的 Animation
@-webkit-keyframes anim1 {
    0% {
        Opacity: 0;
 Font-size: 12px;
    }
    100% {
        Opacity: 1;
 Font-size: 24px;
    }
 }
 .anim1Div {
    -webkit-animation-name: anim1 ;
    -webkit-animation-duration: 1.5s;
    -webkit-animation-iteration-count: 4;
    -webkit-animation-direction: alternate;
    -webkit-animation-timing-function: ease-in-out;
 }

顯示更多

首先,定義動畫的內容,如清單 28 所示,定義動畫”anim1”,變化方式為由”透明”(opacity: 0)變到”不透明”(opacity: 1),同時,內部字體大小由”12px”變到”24px”。然后,再來定義 animation 的變化參數,其中,”duration”表示動畫持續時間,”iteration-count”表示動畫重復次數,direction 表示動畫執行完一次后方向的變化方式(如第一次從右向左,第二次則從左向右),最后,”timing-function”表示變化的模式。

其實,CSS3 動畫幾乎支持所有的 style 變化,可以定義各種各樣的動畫效果以滿足我們用戶體驗的需要。

這里,我們介紹了 CSS3 的主要的新特性,這些特性在 Chrome 和 Safari 中基本都是支持的,Firefox 支持其中的一部分,IE 和 Opera 支持的較少。讀者們可以根據集體情況有選擇的使用。

結束語

本文介紹了 Web 開發中關于 CSS3 的一些內容,由淺入深的逐步引出 CSS3 的各種相關屬性。基于各個 CSS3 屬性的原理,通過實際的源代碼介紹各個 CSS3 新特性的特點,使用方式以及使用中需要注意的地方。在每個新特性的代碼示例后面,通過示例圖,給 Web 開發人員一種比較直觀的視覺感受。在 Web2.0 越來越流行的今天,熟練掌握并能很好的運用 CSS3 的一些特性會給我們的項目帶來前所未有的用戶體驗效果。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,238評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,430評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,134評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,893評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,653評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,136評論 1 323
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,212評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,372評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,888評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,738評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,939評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,482評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,179評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,588評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,829評論 1 283
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,610評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,916評論 2 372

推薦閱讀更多精彩內容

  • HTML5 1.HTML5新元素 HTML5提供了新的元素來創建更好的頁面結構: 標簽描述 定義頁面獨立的內容區域...
    L怪丫頭閱讀 2,819評論 0 4
  • 幾行簡單的 CSS 代碼便可實現一系列令人眼前一亮的效果,比用 JavaScript 去模擬這樣的效果要好得多,不...
    簡不簡單_都好閱讀 445評論 0 1
  • 歡迎訪問我的博客https://qqqww.com/,祝所有碼農同胞們早日走上人生巔峰,迎娶白富美~~ 詳細請移步...
    這里王工頭閱讀 1,605評論 0 16
  • 原文鏈接 除了html5的新特性,CSS3的新特性也是面試中經常被問到的。 選擇器 CSS3中新添加了很多選擇器,...
    bestvist閱讀 8,428評論 0 8
  • 一、選擇器 element1~element2:例p~ul(選擇p元素之后的每一個ul元素) [attribute...
    菜菜的小阿允閱讀 282評論 0 0