1. 程式人生 > 實用技巧 >CSS樣式(二)

CSS樣式(二)

一、 元素溢位處理

屬性值【說明】
overflow

visible 【預設值 不裁剪內容】

hidden 【裁剪內容 裁剪的那部分不可見】

scroll 【無論內容是否超越範圍,都將顯示滾動條。】

scroll="no" 【無論內容是否超越範圍,都將不顯示滾動條。】

auto 【當內容超出範圍時,顯示滾動條,否則不顯示。】

overflow-x overflow-y

visible 【預設值 不裁剪內容】

hidden 【裁剪內容 裁剪的那部分不可見】

auto 【當內容超出範圍時,顯示滾動條,否則不顯示。】

no-display 【如果內容不適合內容框,則刪除整個框。】

no-content【如果內容不適合內容框,則隱藏整個內容。】

二、透明度

屬性值【說明】
opacity 0~1 【值越小越透明】
filter alpha(opacity=x) x=0~100 【值越小越透明】

三、動畫(transform)

transform-origin:0 0;//指定定位x軸 y軸

效果方法說明
旋轉效果 rotate() 元素順時針旋轉給定角度。允許負值,元素將逆時針旋轉。 transform:rotate(30deg);【30度】
縮放效果 scale() 元素尺寸會改變,根據給定寬度(X軸)和高度(Y軸)引數 transform:scale(2,4)【寬度增加2倍,高度4倍】
移動效果 translate() 元素從其當前位置移動,根據給定的(X座標)和(Y座標)引數 transform:translate(50px,100px)【元素從左側移動50畫素,從頂端移動100畫素】
傾斜效果 skew() 元素翻轉給定角度,根據給定水平線(X軸)和垂直線(Y軸)引數。 transform:skew(30deg,20deg)【圍繞X軸把元素翻轉30度,Y軸翻轉20度】
圍繞其X軸旋轉指定度數 rotateX() 元素圍繞其X軸以給定的度數進行旋轉 transform:rotateX(120deg);【繞X軸旋轉120度】
圍繞其Y軸旋轉指定度數 rotateY() 元素圍繞其Y軸以給定的度數進行旋轉。
transform:rotateY(120deg);【繞Y軸旋轉120度

四、過渡特效

屬性值【說明】介紹
transition width 2s,height 2s 【寬度屬性的過渡特效 2秒,高度屬性的過渡特效 2秒】 用於在一個屬性中設定四個過渡屬性
transition-property 過渡或動態模擬的CSS屬性:如 背景色 字型等 all 所以屬性都支援 規定應用過渡的CSS屬性的名稱。
transition-duration 完成過渡所需要的時間(transition-duration):定義過渡完成的時間 定義過渡特效花費的時間。預設為0.
transition-timing-function

ease:速度由快到慢(預設值)

linear:速度恆速(勻速運動)

ease-in:速度越來越快(漸顯效果)

ease-out:速度越來越慢(漸隱效果)

ease-in-out:速度先加速在減速(漸顯漸隱效果)

規定過渡特效的時間曲線,預設是"ease"
transition-delay

正值:元素過渡效果不會立即觸發 當過了設定時間才開始執行

負值:元素過渡效果會從該時間點開始顯示 之前的動作被截至

0:預設值 立即開始執行

規定過渡特效何時開始。預設為0。

五、動畫(animation)

animation:自定義名稱 2s;

例:

/*關鍵幀的建立*/
@keyframes 自定義名稱 {
    from{CSS樣式}         /*第一個動畫的關鍵幀   開始樣式*/
    percentage{CSS樣式}   /*執行過程樣式*/
    to{CSS樣式}           /*改變樣式*/
    /*可用百分比1-100*/
}
/*呼叫關鍵幀*/
animation:
            animation-name             /*建立的關鍵幀名稱*/
            animation-duration         /*動畫時間*/
            animation-delay            /*延遲時間*/
            animation-iteration-count  /*動畫播放次數*/
            animation-direction        /*動畫播放方向*/
            animation-play-state       /*動畫播放狀態【控制】*/
            animation-timing-function  /*動畫方式【關鍵幀變化】*/
                預設值為1
                特殊值infinite :表示無限次播放
                normal         :動畫每次都是迴圈向前播放
                alternate      :動畫播放為偶數次則向前播放
                running        :將暫停的動畫重新播放
                paused         :將正在播放的元素動畫停下來
            animation-fill-mode:動畫開始之前和結束之後發生的操作
                forwards 動畫在結束後繼續應用最後的關鍵幀的位置
                backwards 向元素應用動畫樣式是迅速應用動畫的初始幀
                both 元素動畫同時具有forwards和backwards的效果

例:

.bird {
    min-width: 91px;   /*寬度*/
    min-height: 71px;  /*高度*/
    background: url(http://img.mukewang.com/55ade1700001b38302730071.png)/*圖片*/
}
.birdFly{
    animation-name: bird-slow;/*名稱*/
    animation-duration: 400ms;/*時間*/
    animation-timing-function: steps(3);/*steps要配合精靈圖使用,簡單來說就是用來切換多個精靈圖的,形成幀動畫*/
    animation-iteration-count: infinite;/*次數【無限次】*/
}
@keyframes bird-slow {
    0% {
        background-position: -0px 0px;
    }
    100%{
        background-position: -273px 0px;
    }
}

this.classNamem="move";//呼叫方法

this.classNamem=""; //清除方法

this.classList.add("move"); //新增方法

this.classList.remove("move");//清除方法

六、內聯與塊級標籤

1、塊元素

屬性值 (作用)
display

block (將其他元素擁有塊元素的特性)

inline (將其他元素擁有行內元素的特性)

inline-block (支援寬高 但不獨佔一行)

none (設定元素不會被顯示) 【關閉公告】

inline (將其他元素擁有行內元素的特性)

2、使用display設定元素的顯示方式

屬性作用
inline 預設值
none 隱藏物件。與visibility屬性的hidden值不同,其不為被隱藏的物件保留其物理空間
inline 指定物件為內聯元素。
block 指定物件為塊元素。
list-item 指定物件為列表專案。
inline-block 指定物件為內聯塊元素。(CSS2)
table 指定物件作為塊元素級的表格。類同於html標籤<table>(CSS2)
inline-table 指定物件作為內聯元素級的表格。類同於html標籤<table>(CSS2)
table-caption 指定物件作為表格標題。類同於html標籤<caption>(CSS2)
table-cell 指定物件作為表格單元格。類同於html標籤<td>(CSS2)
table-row 指定物件作為表格行。類同於html標籤<tr>(CSS2)
table-row-group 指定物件作為表格行組。類同於html標籤<tbody>(CSS2)
table-column 指定物件作為表格列。類同於html標籤<col>(CSS2)
table-column-group 指定物件作為表格列組顯示。類同於html標籤<colgroup>(CSS2)
table-header-group 指定物件作為表格標題組。類同於html標籤<thead>(CSS2)
table-footer-group 指定物件作為表格腳註組。類同於html標籤<tfoot>(CSS2)
run-in 根據上下文決定物件是內聯物件還是塊級物件。(CSS3)
box 將物件作為彈性伸縮盒顯示。(伸縮盒最老版本)(CSS3)
inline-box 將物件作為內聯塊級彈性伸縮盒顯示。(伸縮盒最老版本)(CSS3)
flexbox 將物件作為彈性伸縮盒顯示。(伸縮盒過渡版本)(CSS3)
inline-flexbox 將物件作為內聯塊級彈性伸縮盒顯示。(伸縮盒過渡版本)(CSS3)
flex 將物件作為彈性伸縮盒顯示。(伸縮盒最新版本)(CSS3)
inline-flex 將物件作為內聯塊級彈性伸縮盒顯示。(伸縮盒最新版本)(CSS3)
 注:如果display設定為none,float及position屬性定義將不生效;
 重置瀏覽器預設樣式:下載CSSReset

七、佈局

1、多列布局

屬性說明
【分欄】 column-count:<integer>|auto

1、功能 :設定或檢索物件的列數

2、適用於 :除table外的非替換塊級元素, table cells, inline-block元素

3、<integer>: 用整數值來定義列數。不允許負值

4、auto : 根據 <' column-width '> 自定分配寬度

5、例 :【column-count: 3;/分欄/】

【欄間距】 column-gap:<length>|normal

1、功能 :設定或檢索物件的列與列之間的間隙

2、適用於:定義了多列的元素

3、計算值:絕對長度值或者normal

4、例 :【column-gap: 40px; /欄間距/】

column-rule: 欄間分隔符

column-rule-width:大小

column-rule-style:形狀

column-rule-color:顏色

1、功能 :設定或檢索物件的列與列之間的邊框。與border屬性類似。

2、適用於:定義了多列的元素

3、例 :【column-rule: 2px solid #0181CC;/欄間分隔符/】

columns: column-width

column-count

1、功能 :設定或檢索物件的列數和每列的寬度

2、適用於 :除table外的非替換塊級元素, table cells, inline-block元素

3、column-width: 設定或檢索物件每列的寬度

4、column-count: 設定或檢索物件的列數

5、例 :【columns:10px 5;】

2、彈性佈局(Flexbox)

/*放在父類*/
display: flex;              
justify-content:space-between; 

1、display屬性值flex: 將物件作為彈性伸縮盒顯示。【display: flex; /設定彈性盒子/】

2、flex:none | flex-grow、 flex-shrink || flex-basis

   (1)、功能:設定或檢索彈性盒模型物件的子元素如何分配空間

   (2)、適用於:flex子項

   (3)值:

作用
none none關鍵字的計算值為: 0 0 auto
auto 彈性盒中的單項【用過:在有display:flex的子元素中用】
flex-grow 用來指定擴充套件比率,即剩餘空間是正值時此「flex子項」相對於「flex容器」裡其他「flex子項」能分配到空間比例。 在「flex」屬性中該值如果被省略則預設為「1」
flex-shrink 用來指定收縮比率,即剩餘空間是負值時此「flex子項」相對於「flex容器」裡其他「flex子項」能收縮的空間比例。 在收縮的時候收縮比率會以伸縮基準值加權。在「flex」屬性中該值如果被省略則預設為「1」
flex-basis 用來指定伸縮基準值,即在根據伸縮比率計算出剩餘空間的分佈之前,「flex子項」長度的起始數值。在「flex」屬性中該值如果被省略則預設為「0%」,在「flex」屬性中該值如果被指定為「auto」,則伸縮基準值的計算值是自身的 <width> 設定,如果自身的寬度沒有定義,則長度取決於內容。

(4)、Flex容器可以設定屬性flex-flow,取值為row,row-reverse,column,column-reverse四種值:與彈性盒子設定在一起

說明
row 顯示在一行中 【例:flex-flow:row】
row-reverse 顯示在一行中,反轉 【例:flex-flow:row-reverse】
column 顯示在一列中 【例:flex-flow:column】
column-reverse 顯示在一列中 反轉 【例:flex-flow:column-reverse】

1、display: flex;:指定某元素使用 Flexbox 佈局。

注:

(1)、兩個控制元件元素的寬度沒有發生變化,因為彈性佈局預設不改變專案的寬度。

(2)、彈性佈局預設左對齊,所以兩個控制元件會從行首開始排列。

2、flex-grow: 1;//預設為0

說明:容器中剩餘的空間將平均分配給所有子元素。如果其中一個子元素的值為2,那麼剩餘的空間將會佔用兩倍於其他元素的空間;

3、align-self 屬性定義flex子項單獨在側軸(縱軸)方向上的對齊方式。

值:

  flex-start:頂邊對齊,高度不拉伸

  flex-end :底邊對齊,高度不拉伸

  center :居中,高度不拉伸

  stretch :預設值,高度自動拉伸

4、align-items 屬性定義flex子項在flex容器的當前行的側軸(縱軸)方向上的對齊方式。

值:

  flex-start:頂邊對齊,高度不拉伸

  flex-end :底邊對齊,高度不拉伸

  center :居中,高度不拉伸

  stretch :預設值,高度自動拉伸

  baseline :元素位於容器的基線上。

5、flex-direction 屬性規定靈活專案的方向

值:

  row(預設) :從左到右;

  row-reverse :是從右到左

  column :從上到下

  column-reverse:從下到上

6、flex-wrap 屬性規定flex容器是單行或者多行,同時橫軸的方向決定了新行堆疊的方向。

值:

   nowrap(預設):所有flex item將在一條線上

  wrap :flex item將會從上到下分為多行

   wrap-reverse :flex item將會從下到上分為多行

7、flex-shrink 屬性指定了 flex 元素的收縮規則。flex 元素僅在預設寬度之和大於容器的時候才會發生收縮,其收縮的大小是依據 flex-shrink 的值。

值:數字

3、瀑布流佈局

1、下載:masonry

2、引用:

<script src="js/masonry/masonry.pkgd.min.js" type="text/javascript" charset="utf-8"></script>

3、初始化外掛:

(1)、方法一:使用jQuery

//頁面載入時
window.onload = function() {
    //獲取容器
    $('#grid').masonry({
        //瀑布流佈局中的單項選擇器
        itemSelector: '.grid-item',
        columnWidth: 200
    });
}

(2)、方法二:JavaScript

//頁面載入時
window.onload = function() {
    var grid = document.querySelector('#grid');
    var msnry = new Masonry(grid, {
        itemSelector: '.grid-item',
        columnWidth: 200
    });
}

4、屬性:

屬性作用
itemSelector : '.item' 瀑布流佈局中的單項選擇器
columnWidth : 240 一列的寬度
isAnimated:true 使用jquery的佈局變化,是否啟用動畫
animationOptions:{ //jquery animate屬性 漸變效果 Object { queue: false, duration: 500 } }
gutterWidth:0, 列的間隙 Integer
isFitWidth:true 是否適應寬度 Boolean
isResizableL:true 是否可調整大小 Boolean
isRTL:false 是否使用從右到左的佈局 Boolean

4、Grid佈局

邊距摺疊

  外邊距摺疊:相鄰的兩個或多個外邊距 (margin) 在垂直方向會合併成一個外邊距(margin)

  相鄰 :沒有被非空內容、padding、border 或 clear 分隔開的margin特性. 非空內容就是說這元素之間要麼是兄弟關係或者父子關係,

垂直方向外邊距合併計算

  a)、參加摺疊的margin都是正值:取其中 margin 較大的值為最終 margin 值。

  b)、參與摺疊的 margin 都是負值:取的是其中絕對值較大的,然後,從 0 位置,負向位移。

  c)、參與摺疊的 margin 中有正值,有負值:先取出負 margin 中絕對值中最大的,然後,和正 margin 值中最大的 margin 相加。

1、網格容器:

display:grid;

2、單位:

(1)、fr:剩餘空間分配數。用於在一系列長度值中分配剩餘空間,如果多個已指定了多個部分,則剩下的空間根據各自的數字按比例分配

3、grid-template:定義行與列的軌道大小

說明:使用以空格分隔的多個值來定義網格的列和行。

(1)、列:grid-template-columns

(2)、行:grid-template-rows

屬性值:

(1)、軌道大小【track-size】:可以使用css長度(pX、em等)、百分比、或用分數(用f單位)

(2)、網格線名字【line-name】:可以選擇任何名字

/*軌道大小*/
.container{
    display: grid;                                    /*定義網格容器*/
    grid-template-columns : 40px 50px auto 50px 40px ;/*5列*/
    grid-template-rows : 25% 100px auto ;             /*3行。。。(或更多)*/
}
/*網格線名稱+軌道大小*/
.container{
    display: grid;                         /*定義網格容器*/
    /*5列【網格線名稱+軌道大小】*/
    grid-template-columns :[one]40px [two]50px [three]auto [fout]50px [five]40px ;
    grid-template-rows : 25% 100px auto ;        /*3行。。。(或更多)*/
}

4、grid-template-areas:通過引用grid-area屬性指定的網格區域的名稱來定義網格模板。

屬性值:

(1)、<grid-area-name>:使用grid-area屬性設定的網格區域的名稱

(2)、".":點號代表一個空網格單元

(3)、none:沒有定義網格區域

.container{
    tgrid-template-areas : "header header header header"  //第一行
                           "main main . sidebar"          //第二行
                           "footer footer footer foot"    //第三行
} 

5、指定網格線的大小,控制行列之間的間距寬度:

(1)、列:grid-column-gap:數值(px等等)

(2)、行:grid-row-gap:數值(px等等)

6、對齊

(1)、沿著行軸對齊網格內容:justify-items

值:

  1)、start:內容與網格區域的左端對齊

  2)、end:內容與網格區域的右端對齊

  3)、center:內容位於網格區域的中間位置

  4)、stretch :內容寬度佔據整個網格區域空間(這是預設值)

(2)、沿著縱軸對齊網格內容:align-items

值:

  1)、start:內容與網格區域的頂部對齊

  2)、end:內容與網格區域的底部對齊

  3)、center:內容位於網格區域的中間位置【垂直居中】

   4)、stretch :內容寬度佔據整個網格區域空間(這是預設值)

(3)、簡寫:place-items:【值一樣】(第一個【列】 第二個【行】)

7、css函式

(1)、repeat():重複

例:
grid-template-columns :repeat(5,100px) ;

8、合併行列【如:把2列合併為一列】

(1)、列的開頭:grid-column-start

(2)、列的結尾:grid-column-end

(3)、行的開頭:grid-row-start

(4)、行的結尾:grid-row-end

.c .t:nth-child(7){
    background-color: royalblue;
    grid-column-start: 2;
    grid-column-end: 5;
    grid-row-start: 2;
    grid-row-end: 5;
} 

5、PC端固定佈局

6、移動端流體佈局

rem

font-size:625%;

max-width:6.4rem;

margin:0 auto;

每個標籤都有設定:font-size

媒體查詢

7、相容響應式佈局

unction resize() {
        var w = document.documentElement.clientWidth;
        document.documentElement.style.fontSize = w * 20 / 290 + "px";
}
window.onresize =resize 

max-width:1263px;

百分比

八、漸變

屬性值【說明】
background

visible 【預設值 不裁剪內容】

hidden 【裁剪內容 裁剪的那部分不可見】

scroll 【無論內容是否超越範圍,都將顯示滾動條。

scroll="no" 【無論內容是否超越範圍,都將不顯示滾動條。】

auto 【當內容超出範圍時,顯示滾動條,否則不顯示。

九、字型

1、使用@font-face:

@font-face {
    font-family: myiconfont2; 
    font-family: <Name>;
    src: url('fontello-e1116127/font/fontello.woff2'); 
    src: <source> [<format>][, []]*;            };
    [font-weight: <weight>];         
    [font-style: <style>];
} 
(1)、Name  :自定義的字型名稱。
(2)、source:自定義的字型的存放路徑。
(3)、format:自定義的字型的格式,其值主要有以下幾種型別:
①、truetype,
②、opentype,
③、truetype-aat
④、embedded-opentype,
⑤、avg等;

(4)、weight和style:weight定義字型是否為粗體,style主要定義字型樣式,如斜體。

2、下載字型:

   (1)、http://fontello.com/

  (2)、http://www.fontawesome.com.cn/

3、使用字型:

(1)、方法一:

<style type="text/css">/*引入字型*/
    @font-face {
        font-family:iconfont;                     /*自定義字型名稱*/
        src: url("fontello-e1116127/font/fontello.woff2");   /*字型路徑【注:一定要“/”】*/
        font-weight: normal;                                 /*加粗*/
        font-style: normal;                                  /*字形,如斜體*/
    }
    h1,h2{
        font-family:iconfont;     /*使用字型*/
    }
</style>
<h1>&#xe800;</h1>        <!--字型編號:&#開頭-->

(2)、方法二:

/*方法二、偽元素*/
h2:after{
    content: "\e804";
}       
<h2></h2>

(3)、方法三:

<!--方法三、引入字型樣式-->
<link rel="stylesheet" type="text/css" href="font-awesome-4.7.0(字型圖示)/css/font-awesome.min.css"/>
<!--根據規則使用字型-->
<i class="fa fa-spinner fa-spin fa-3x fa-fw"></i>

4、字型格式轉換:

(1)、常用的字型轉換線上工具如下:

   ①、https://www.fontsquirrel.com/tools/webfont-generator

   ②、https://everythingfonts.com/

   ③、http://www.freefontconverter.com/

  ④、http://www.font2web.com/

(2)、這裡以webfont-generator為例:

步驟:

   ①、先下載字型,英文字型可以去"http://www.dafont.com/"下載

   ②、將下載到的字型上傳:

    Ⅰ、開啟https://www.fontsquirrel.com/tools/webfont-generator字型格式轉換網站

    Ⅱ、upload fonts 【上傳字型】

    Ⅲ、BASIC(直接轉換)、OPTIMAL(最佳轉換)、EXPERT...(專家) 【三選一】

    Ⅳ、Agreement:Yes, the fonts I'm uploading are legally eligible for web embedding.【點選允許】

    Ⅶ、download your kit 【下載你的工具包】

③、引入字型、使用字型

 @font-face {
     font-family:sketch3d;
     src: url("webfontkit-20180823-073032/chased_through_the_woods-webfont.woff2");
}
h1{
    font-family: sketch3d;
}
<h1>Holle Web</h1>