1. 程式人生 > 實用技巧 >css知識點問答(一)

css知識點問答(一)

1. 引入樣式的方式

外部樣式

link

@import

區別

內部樣式

/* 寫在頭部標籤 */
<style>

</style>

行內樣式

2. 三行程式碼畫三角形

.triangle{
    width:0px;
    border:100px solid;
    border-color:transparent transparent transparent red;
}

3.屬性的繼承

可繼承的屬性

文字屬性

font-color: 字型顏色

font-family:字體系列

font-weight:字型的粗細

font-size:字型的大小

font-style:字型的風格

css文字屬性

可繼承 但是字型顏色遇到a標籤,必須給a標籤

text-indent:文字縮排

text-align:文字水平對齊

text-decoration 文字修飾

line-height:行高

word-spacing:單詞之間的間距

letter-spacing:中文或者字母之間的間距

text-transform:控制文字大小寫(就是uppercase、lowercase、capitalize這三個)

列表屬性

可繼承

list-style:列表風格,包括list-style-type、list-style-image等

不可繼承的屬性

背景屬性

邊框屬性

其他屬性

width height float overflow

4. 單行文字超出時 不換行 隱藏 產生省略號

  • 給定容器寬度 :width value
  • 強制文字在一行內顯示 不換行 white-space:nowrap
  • 溢位的內容隱藏:overflow:hidden
  • 溢位時顯示省略號 text-overflow:ellipsis

5. css樣式屬性的層疊(權重)

選擇器

  • ID選擇器
    • id表示身份,用#id引用該id,在頁面中元素的id不能衝恢復,id選擇器只能選擇單個元素
  • 標籤選擇器
    • 根據標籤名稱,選擇對應的所有標籤
  • 類(別)選擇器
    • 選擇擁有該類的多個元素,用.class名引用
  • 通用選擇器
    • 針對頁面上所有的標籤都生效

選擇器的權重

  • 一般情況下
    • 行內樣式優先生效 > id選擇器 > class類選擇器 > 標籤選擇器 > 通用選擇器
  • 樣式衝突的情況下
    • 誰的權重值高(權重之和),誰就先生效
    • 行內樣式權重值為1000
    • ID選擇器權重值為100
    • 類選擇器權重值為10
    • 標籤(元素)擇器權重值為1
    • 萬用字元的權重值為1
    • 通用選擇器權重值為0

偽類的權重是10

技巧:選擇器選擇的範圍越小越精確,優先順序就越高

6. 元素的型別及特點

塊狀元素

特點

  • 獨佔一行或一塊區域,豎著排列
  • 可以新增寬高
  • 可以設定margin和padding值,上下左右都生效
  • 可以作為其他元素的父元素

行內元素

特點

  • 在預設情況下,元素是挨著排列
  • 在預設情況下,給元素新增寬高是無效
  • 在預設情況下,給元素新增margin和padding值,僅有左右方向生效,上下不生效

行內塊狀元素

特點

  • 就是塊狀元素和行內元素的綜合
    • 可以設定寬高的屬性,來自塊狀元素的特點
    • 挨著排列的屬性,來自行內元素
  • 與其他元素挨在一起的時候,會有預設間距
  • 它有一個專有屬性 vertical-align:top/middle/bottom

可變元素

自己有預設的樣式

7. 元素的顯示與隱藏

使用display:none隱藏元素
使用:hover{display:block} 滑鼠經過時,顯示元素

.boss:hover .box{display:block}
/* 最好後面的元素是前面元素的後代,在父級元素上懸停滑鼠,元素出現 */

opcatity:0
opcatity:1

vsibility:hidden
visibility:visible

8. css可以取負值的屬性

  • background-position
  • text-indent
  • margin-left margin-top
  • position的left right bottom top
  • transform
  • z-index
  • text-shadow 文字陰影的水平和垂直方向
  • flex佈局的子元素屬性order

注意:padding不可以取負值

9. 圖片向下撐大3畫素的解決辦法

  • 給圖片本身新增vertical-align:top/middle/bottom可以解決被撐下來的3px問題 (推薦)
  • 左右方向間距的,給圖片加display:block轉為塊級元素 (推薦)
  • 左右方向間距的,給圖片或父元素新增浮動float
  • 可以給圖片本身或者圖片的父級元素新增float:left (圖片右邊的邊距)
  • 給body{}新增font-size為0 (不推薦)

10. 子元素新增margin-top,父元素下移的解決辦法

  • 給父元素新增overflow:hiden

  • 給父元素新增一個上邊框

  • 給父元素或者子元素新增浮動(不推薦);

  • 把margin改為padding;

  • 觸發BFC

11. 圖片在一塊區域裡做水平垂直居中的實現辦法

給父級元素設定line-height和text-align:center,給圖片設定vertical-align:middle

12.盒模型包含哪些內容

w3c標準盒模型

margin padding border content

13. 定位的屬性值有哪些?各自有什麼特點

  • static 預設值,無定位
  • absolute 絕對定位,脫離文件流(飄了),定位使用left/right/bottom/bottom,控制自己想去的位置
    • 文件流 給元素新增絕對定位之後,元素會飄起來,別人佔據自己的位置
    • 參照物 第一種情況 在該元素設定絕對定位之後,它的父元素身上沒有任何定位設定的時候,就參照瀏覽器的的第一屏做定位(開啟定位),使用relative最好,當然使用absolute更好
    • 第二種情況 要圍繞父元素做位置移動,就父元素新增定位(最好給相對定位)
    • 層級關係 z-index
  • relative 相對定位
    • 文件流 給元素新增position:relative相對定位後,不會脫離文件流,元素沒有飄
    • 參照物 有參照物,相對自己原來的位置做移動
    • 層級關係 z-index
  • fixed 固定定位 相對於瀏覽器整個視窗做固定定位
    • 文件流 給元素新增固定定位後,就飄了(脫離文件流)
    • 參照物 即使頁面過大,出現滾動條,仍然相對於瀏覽器視窗做定位
    • 層級關係 z-index
  • sticky 粘性定位 主要用來做吸頂效果
    • 沒有飄,沒有脫離文件流
    • 在頁面沒有滾動條的時候,只有left屬性生效
    • 在頁面有滾動條的情況下,left top bottom 方向是生效的,主要是top生效,吸頂效果
    • 層級關係 z-index

14. 小盒子在大盒子中水平垂直居中

純margin

純padding

純定位,子絕父相 子元素設定left和top為具體數值

position定位的 left為50%,top為50% ,高寬配合margin回退自己寬高的-一半

position配合top right bottom left 為0 margin為 auto

position定位配合left top 為50%,transform的translate 回退 -50%

flex實現水平垂直居中

display;flex;
justify-content:center;
align-items:center;

grid網格佈局

15.透明屬性是哪個?它的相容性是什麼

opacity為0 消失

opacity 為1 出現

解決相容性

過濾器

在google中的寫法

  • opacity:0.4

相容IE8及以下瀏覽器

  • filter:alpha(opacity=40) 0.4要寫成100倍

16 .高度塌陷解決方案

解決方案

  • 給父元素新增高

    • 缺點:不適合自適應的佈局
  • 直接給父元素新增float

    • 缺點:遇到高度自適應的時候就不好用了
  • 給父元素設定overflow:hidden或者auto

    • 缺點:遇到定位就不太好用了(超出隱藏)
  • 在浮動元素的下方,加一個非浮動的空盒子,給該盒子新增clear:both清除浮動

    .p1{
        clear:both;
    }
    
    • clear用於清除浮動,有3個值,left/right/both
    • 缺點:頁面中太多的空標籤會造成標籤的冗餘
  • 萬能清除法(推薦使用)

    給父元素新增clear公共類名,哪裡需要清除,在哪裡新增類名clear

    .clear:after{
    	content:"";
        display:block;
        height:0;
        clear:both;
        overflow:hidden;
        visibility:hidden;
    }
    
    
    /* 相容IE6 */
    .clear{
    	zoom:1;
    }
    
  • 給父元素新增浮動

缺點:需要解決新的浮動問題(不推薦)

  • display:table

    缺點:產生未知bug

17. 一屏網頁必須新增什麼

一個頁面不能出現滾動條,寬高同時自適應

一屏網頁:寬高同時100%(body和html)

高度塌陷就是,子元素設定浮動之後,父元素沒有設定高度或者父元素需要高度自適應的情況:

子元素設定浮動,高度設定height:auto

18. 五大瀏覽器對應的核心

19. H5有什麼特點?請說出6個h5新增加的標籤

H5的特點

(1)更簡潔、但是在實際開發中要注意書寫規範,利於後期維

(2)標籤的語義化
語義化的重要性:
① 當頁面載入失敗的時候,還能夠呈現出清晰的結構
② 有利於SEO優化,利於被搜尋引擎收錄(即便於網路爬蟲
的識別)
③ 在專案開發及維護時,語義化的也很大程度上降低開發
難度,節省成本
(3)語法更寬鬆
(4)多裝置跨平臺
(5)自適應網頁設計

H5的標籤

<header>...<header> 頭部標籤

<footer>...<footer> 尾部標籤

<section>...<section> 內容區塊

<article>...,article> 表示頁面中的獨立內容

<aside>...<aside> 標籤定義其所處內容之外的內容

<nav>...<nav> 導航

<figure>...<figure>表示一段獨立的流內容

<embed>...<embed> embed標籤用於定義巢狀的內容,包括各種媒體

<mark>...<mark>高亮顯示

  • 可以改變其高亮顏色

<video>...<video> 視訊標籤

<video src="song.mp3" controls="controls" autoplay=autoplay>
</video>

<audio>...<audio> 音訊標籤

<audio src="song.mp4" controls="controls" autoplay=:autoplay>
</audio>

<datalist>...<datalist> 智慧列表 供其選擇

<p>
    /* list裡的id要和datalist裡的id一致 */
    <input type="text" nmae="a1" list="text">   
</p>

<datalist id="text">
    <option>大班</option>
    <option>班級</option>
    <option>班班</option>
</datalist>

<canvas>...<canvas>canvas可以完成動畫、遊戲、圖表、影象處理等原來需要Flash完成的一些功能

<hgroup>...<hgroup> 標籤被用來對標題元素進行分組。

20. 怪異盒

在IE6及其以下版本里,DOCTYPE缺失會觸發怪異盒模式

  • 給元素新增的padding值和border值,不會計算在元素原有的寬高,不會把盒子撐大

    /* 可以讓W3C標準盒模型變成怪異盒模型 */
    box-sizing:border-box;
    
    
    /* 變成W3C標準盒模型 */
    box-sizing:content-box;
    
    

/* 火狐相容 */
-moz-box-sizing:content-box;

/* IE相容 */
-ms-box-sizing:content-box;

/* Opera相容 */
-o-box-sizing:content-box;


  /* Chrome和sarfi相容 */
  -webkit-box-sizing:content-box;
  

21. 什麼是圖片整合技術?css精靈圖有什麼優勢?

優勢

22. css3屬性有哪些特點和優勢?說出8個css3屬性

23. 背景大小屬性裡,那個屬性值不會被剪裁

文字效果

1. text-shadow 文字陰影

.text1{
    text-shadow:5px 5px 5px pink;
}
  • h-shadow 水平方位移動的陰影(正值向右,負值向左)
  • v-shadow 垂直方位移動的陰影(正值向下,負值向上)
  • blur 模糊的距離,只能是正值(可選引數)
  • color 陰影的顏色 (可選引數)

2. box-shadow 盒子陰影

陰影是不佔據位置的

div
{
   box-shadow: 1px 1px 11px 4px #888888 inset;
}
單邊盒子陰影
/*  上部 */
.top{
    box-shadow:0 -2px 0 red;
}
/*  右邊 */
.right{
    box-shadow:2px 0 0 green;
}
/*  底部 */
.bottom{
    box-shadow:0 2px 0 blue;
}
/*  左邊 */
.left{
    box-shadow:-2px 0 0 tomato;
}
h-shadow 必需的。水平陰影,陰影離開盒子的橫向距離。允許負值
v-shadow 必需的。垂直陰影,陰影離開盒子的縱向距離。允許負值
blur 可選。模糊半徑
spread 可選。陰影的延伸半徑,大小
color 可選。陰影的顏色。在CSS顏色值尋找顏色值的完整列表
inset 可選。從外層的陰影(開始時)改變陰影內側陰影

3.word-break 強制換行

p.test {
    word-break:break-all;
}
normal 使用瀏覽器預設的換行規則。
break-all 允許在單詞內換行。
keep-all 保留單詞完整性,只能在半形空格或連字元處換行。

4. word-wrap 單詞換行

.box{
    /* 網址換行 */
    word-wrap:break-word;
}

字型

@font-face

背景

1. background-clip 背景裁切

-webkit-background-clip:text;
color:transparent;
/* 或者 */
-webkit-text-fill-color:transparent;

2. background-origin背景原點

3. background-size 背景中影象的尺寸

  • length percentage cover會在一定程度上裁剪的
  • contain 不裁剪 ,保持原圖寬高比例

圓角

border-radius

如果你在 border-radius 屬性中只指定一個值,那麼將生成 4 個 圓角。

但是,如果你要在四個角上一一指定,可以使用以下規則:

  • 四個值: 第一個值為左上角,第二個值為右上角,第三個值為右下角,第四個值為左下角。
  • 三個值: 第一個值為左上角, 第二個值為右上角和左下角,第三個值為右下角
  • 兩個值: 第一個值為左上角與右下角,第二個值為右上角與左下角
  • 一個值: 四個圓角值相同(50%),即正圓

邊框圖片

1. border-image


顏色特性

hsl(色調,飽和度%,亮度%)

hsla(色調,飽和度%,亮度%,透明度)

亮度和飽和度需要加%

漸變

漸變是背景圖

線性漸變
.div:nth-child(1){
    background-image:linear-gradient(yellow,green,blue)
}
  • 從下往上漸變 to top

      background-image:linear-gradient(to top,yellow,green,blue)
    
  • 從左往右right

     background-image:linear-gradient(to right,yellow,green,blue)
    
  • 右上對角漸變to right top

     background-image:linear-gradient(to right top,yellow,green,blue)
    
  • 顏色多給一點

    background-image:linear-gradient(to right top,yellow 80%,green,blue)
    
徑向漸變

預設是橢圓

background-image:radial-gradient(circle,yellow 80%,green,blue)

多背景圖

background:url(img/1.png) no-repeat left top,url(img/2.png) no-repeat right top,url(img/3.png) no-repeat left bottom,url(img/4.png) no-repeat right bottom

24. 什麼是BFC?觸發BFC的條件有哪些?

塊級格式化上下文

獨立的渲染區域,需要一定規則觸發

是什麼

觸發條件

overflow的值

描述
visible 預設值。內容不會被修剪,會呈現在元素框之外。
hidden 內容會被修剪,並且其餘內容是不可見的。
scroll 內容會被修剪,但是瀏覽器會顯示滾動條以便檢視其餘的內容。
auto 如果內容被修剪,則瀏覽器會顯示滾動條以便檢視其餘的內容。
inherit 規定應該從父元素繼承 overflow 屬性的值。

特性

25. margin的上下重疊問題怎麼解決?

margin的重疊問題

上下兩個盒子同時給margiin的時候,會發生重疊,重疊的時候取margin最大值

解決辦法

  • 給其中一個子元素新增一個父盒子,新增 overflow:hidden/scroll/auto; display:inline-block;float-left/right;等等 讓他倆觸發BFC

26. 兩欄佈局怎麼實現?

BFC的區域不與float浮動的盒子重疊,BFC特性實現兩欄佈局

左列定寬,右列自適應

  • 給左邊固定寬 新增浮動,給右邊新增overflow:hidden,會實現兩欄自適應

  • 給父級設定display:flex,自適應列設定flex:1,均分剩餘空間

右列定寬,左列自適應

27. 三欄佈局怎麼實現?

分情況

兩側定寬,中間自適應

  • 兩側的兩列float,中間列給overflow:hidden,但是自適應列的區塊和右列的區塊,在html中交換順序,即解析順序:left center right
  • 兩側的兩列float,中間列給margin-left(對應的是左列寬度),margin-right(對應的是右列寬度),但是自適應列的區塊和右列的區塊,在html中交換順序,即解析順序:left center right
  • 兩側的兩列給position:absolute,父元素給position:relative,但是自適應列的區塊和右列的區塊,在html中交換順序,即解析順序:left center right
  • 父級設定dsiplay:flex兩側定寬設定寬度,自適應列設定flex:1均分剩餘空間

左邊兩列定寬,右列自適應

28 .transition和animation之間有什麼共同點和區別?

29. transform:translateX(100px) rotateZ(45deg)和transform:rotateZ(45deg) translateX(100px)實現的效果是一樣的嗎?為什麼?

transform:translateX(100px) rotateZ(45deg)是同時沿x軸偏移100px,同時也沿z軸旋轉45度

transform:rotateZ(45deg) translateX(100px),是有先後順序的,即先旋轉45度之後,再沿x軸偏移100px

30. 什麼是漸進增強和優雅降級

  • 漸進增強
    • 先考慮低版本相容,再慢慢考慮高版本(更推薦)
  • 優雅降級
    • 先考慮高版本,再考慮低版本

31. 移動端佈局的方式有哪些

32 .em和rem的區別?

  • 共同點:都是相對單位,相對於別的元素的改變而變化的

  • 區別:em相對於最近父元素的字號大小、rem相對根元素字號大小

33. 響應式設計的特點(responsive設計特點)