CSS學(xué)習(xí)筆記
在學(xué)習(xí)CSS的過程中做的一些記錄,用于未來的快速回憶。HTML常見元素和理解 head中的元素
指定字符集
meta name="viewport" content="..."定義視圖大小與設(shè)備屏幕大小的比例,用戶是否可縮放
a[href, target]
img[src, alt]
table td[colspan, rowspan]
form[target, method, enctype]
input[type, value]
button[type]
select > option[value]
label[for]
如何理解HTMLHTML用于描述網(wǎng)頁的結(jié)構(gòu),負責頁面整體的結(jié)構(gòu)
可以使用http://h5o.github.io/來分析一個頁面的結(jié)構(gòu)
HTML要強調(diào)語義化
使用https://validator.w3.org/check來檢查HTML語法
HTML5新增內(nèi)容新的區(qū)塊標簽:section、article、nav、aside
表單增強:添加日期時間搜索類型、表單驗證、Plaveholder自動聚焦
新增語義:header/footer頭尾、section/article區(qū)域、nav導(dǎo)航、aside不重要的內(nèi)容、em/strong強調(diào)、i為icon
HTML元素分類按默認樣式分:塊級block、行內(nèi)inline(沒有尺寸屬性width/height等)、inline-block
HTML元素嵌套關(guān)系塊級元素可以包含行內(nèi)元素
塊級元素不一定能包含塊級元素,例如
行內(nèi)元素一般不能包含塊級元素(a >div 元素例外)
HTML元素默認樣式使用CSS Reset清除一些默認樣式
使用Normalize.css來修正默認樣式(例如修正各瀏覽器對寬高定義的不一致)
HTML面試題
doctype的意義是什么?
讓瀏覽器以標準模式渲染
讓瀏覽器知道元素的合法性
HTML XHTML HTML5之間的關(guān)系?
HTML屬于SGML
XHTML屬于XML,是HTML進行XML嚴格話的結(jié)果
HTML5不屬于SGML或XML,比XHTML寬松
HTML5有什么變化?
新的語義化元素、表單增強、新的API(離線、音視頻、圖形、實時通信、本地存儲、設(shè)備能力)
em與i有什么區(qū)別?
em 是語義化的標簽,表強調(diào)
i 是純樣式的標簽,表斜體(一般不在HTML5中用)
語義化的意義是什么?
開發(fā)者容易理解
機器容易理解結(jié)構(gòu)(搜索引擎、讀屏軟件)
有助于SEO
哪些元素可以自閉合?
input、img、br、hr、meta、link
HTML和DOM的關(guān)系?
HTML是靜止的
DOM是由HTML解析而來的,是活的
JS可以維護DOM
form的作用有哪些?
直接提交表單
使用submit/reset按鈕
便于瀏覽器保存表單
第三方庫可以整體提取值
CSS(Cascading Style Sheet)基礎(chǔ)瀏覽器在解析選擇器時是從右到左的。選擇器分類
元素選擇器 a{}
偽元素選擇器 ::before()
類選擇器 .link{}
屬性選擇器 [type=radio]{}
偽類選擇器 :hover{}(偽元素是真實存在的,而偽類是一種狀態(tài))
ID選擇器 #id{}
組合選擇器 [type=checkbox] + label{}
否定選擇器 not(.link){}
通用選擇器 *{}
選擇器權(quán)重
權(quán)重計算,相加時不進位
ID選擇器:+100
類、屬性、偽類:+10
元素、偽元素:+1
其他選擇器:+0
!important優(yōu)先級最高
元素屬性 優(yōu)先級高
相同權(quán)重 后寫的生效
非布局樣式
字體
字體族(使用時不能加引號):serif(襯線體)、sans-serif(非襯線體)、monospace(等寬字體)、cursive(手寫體)、fantasy(花體)
多字體(使用時需要對每個字體用引號,fallback機制是針對每個字)
網(wǎng)絡(luò)字體、自定義字體
/* 自定義字體 */ /* url可使用在線url,若跨域,需要對方服務(wù)器允許跨域(對方服務(wù)器展示CORS頭) */ @font-face { font-family: "JC"; src: url("./define.ttf") } .custom-font { font-family: JC }
iconfont
行高
line-height會撐起line-box的高度,以line-height最大的為準
字體渲染時默認以base-line(基線)為準,可通過修改vertical-align來修改對齊方式或基線位置
圖片空白
原因:img行內(nèi)元素,以inline的方式排版,渲染時默認以字體對齊的base-line為準
偏差大?。阂宰煮w大小為依據(jù)
修正:①將圖片style設(shè)置為vertical-align: bottom;②display: block;
背景
純色背景:使用顏色名或rgb或rgba(帶透明度)或hsl(色相)或hsla(帶透明度的色相)指定
漸變色背景:
線性漸變
簡單寫法:linear-gradient(to right, red, green),to right指明從左到右,也可使角度30deg
也可添加多顏色以及控制顏色位置linear-gradient(30deg, red 0, green 10%, yellow 50%, green 100%)
放射性漸變
多背景疊加
背景①:linear-gradient(135deg, transparent 0, transparent 45.5%, green 45.5%, green 55.5%, transparent 55.5%, transparent 100%)
背景②:linear-gradient(45deg, transparent 0, transparent 45.5%, red 45.5%, red 55.5%, transparent 55.5%, transparent 100%)
設(shè)定背景大小可以讓背景顏色循環(huán)出現(xiàn)background-size: 30px 30px
背景圖片和屬性(雪碧圖)
使用backgorund-repeat可以控制圖片是否平鋪以及在哪個方向循環(huán)平鋪
使用background-position來指定圖片的位置,如background:center center為居中,也可是使用像素
使用background-size來控制圖片大小
雪碧圖(性能優(yōu)化的一種)制作
就是將很多圖片合成一張圖片(下載時只需要一次http請求),使用時將某部分顯示出來即可
使用div來放置圖片,使用background來引入圖片,使用width/height來擬合圖標的大小,使用backgroung-position來在雪碧圖中找到圖標,使用background-size來縮放圖標大小
base64和性能優(yōu)化
常用于小圖標
文件會增大(①圖片體積會增大1/3;②CSS文件會變大)
會變慢(瀏覽器需要將base64解碼)
多分辨率適配
對于高分辨率的屏幕,需要制作更大尺寸的圖標,然后使用background-size將其縮小,以解決高分屏模糊的問題
邊框
邊框的屬性:線型、大小、顏色
邊框背景圖border-img: url(./border.png) 30 round
邊框銜接(CSS實現(xiàn)三角形)
.div-class { width: 0px; height: 200px; border-bottom: 30px solid red; border-left: 30px solid transpatrnt; border-right: 30px solid transpatrnt; /* 添加圓角可以將三角形變成扇形 */ }
滾動
滾動行為與滾動條
visivle: 滾動條隱藏(會超出容器)
hidden: 滾動條隱藏(不會超出容器)
scroll: 滾動條顯示
auto: 滾動條自動顯示
文本折行
overflow-wrap(舊寫為word-wrap,通用換行控制):是否保留單詞
word-break(針對多字節(jié)文字):是否把單詞/中文句子/文字看作一個單位
white-space:空白處是否斷行
/* 這是一個示例,不對單詞換行、單個中文字為單位 */ .div-class { overflow-wrap: normal; word-break: normal; white-space: normal; }
裝飾性屬性
字重:font-weight
斜體: font-style:itatic
下劃線: text-decoration
指針: cursor
hack
hack(不合法但生效的寫法):在特定瀏覽器生效,為了處理兼容性
hack寫在標準屬性后面
缺點:難理解、難維護、易維護
替代方案:特性檢測、針對性添加class
面試題
CSS樣式(選擇器)的優(yōu)先級?
權(quán)重的計算(疊加不進位)
!important優(yōu)先級最高
內(nèi)聯(lián)樣式高
后寫的優(yōu)先級高
雪碧圖的作用
減少HTTP請求數(shù),提高加載性能
在一些情況下可以減少圖片的大小
自定義字體的使用場景
宣傳/品牌/banner等固定文案
字體圖標
base64的使用
將圖片變成文本
減少HTTP請求數(shù)
適用于小圖片
偽元素與偽類的區(qū)別
偽類表狀態(tài)
偽元素是真的有元素
前者單冒號,后者雙冒號(由于歷史問題,考慮兼容性時before/after可能需要使用單冒號)
如何美化checkbox
label[for]和id
隱藏原生input
input:checked + label
CSS(Cascading Style Sheet)布局 CSS布局歷史早期以table為主(簡單)
后來以技巧性布局為主(難)
現(xiàn)在有flexbox/grid布局(偏簡單)
響應(yīng)式布局是必備知識
常用布局方法table表格布局
float浮動 + margin
inline-block布局
flexbox布局
table表格布局左 | 右 |
.table { display: table; width: 900px; height: 100px; } .table-row { display: table-row; } .table-cell { display: table-cell; vertical-align: center; }一些布局屬性
盒子模型
content、 padding、border、margin
兩種:W3C標準模型、IE標準模型
display/position
display確定元素的顯示類型:block/inline/inline-block
position確定元素的位置:static(默認)/relative/absolute/fixed
static默認值,文檔流
relative相對位置,是相對于元素本身原來的位置,該值不會改變元素原來占用的空間
absolute絕對位置,脫離文檔流,不影響文檔流的其他元素,相對于最近的relative或absolute元素
fixed,脫離文檔流,不影響文檔流中的其他元素,相對于屏幕可視區(qū)域來固定
層級
使用z-index來設(shè)置層級(relative,absolute,fixed這三種可以設(shè)置z-index)
默認后出現(xiàn)的元素在上層
flexbox布局(現(xiàn)代化布局)
基本知識
是彈性盒子
盒子本來就是并列的
指定寬度即可(可使用flex:1與width:20px兩種方式)
兼容性問題:IE完全不支持flex
float布局
特性
元素“浮動”
脫離文檔流,不脫離文本流
對自身的影響
形成“塊(block)”(BFC)
位置盡量靠上
位置盡量靠左(右)
對兄弟元素的影響
上面貼非float元素,旁邊貼float元素
不影響其他塊級元素的位置,影響其他塊級元素的文本
對父級元素的影響
從布局上“消失”
高度塌陷
float三欄布局示例
.left { float: left; width: 200px; } .right { float: right; width: 200px; } .middle { margin-left: 200px; margin-right: 200px; } /* 注意,這里應(yīng)該將left與right元素放在上面,然后再放middle */inline-block布局
特性
像文本一樣排列block元素
沒有清除浮動的問題
需要處理間隙問題
處理inline-block的間隙問題(就好比文字之間有間隙,inline-block同樣有這個問題)
父元素中將font-size設(shè)置為0;子元素中再將font-size設(shè)置回來(推薦使用這種方式)
間隙是因為兩個div尾部與頭部之間的空間造成的,解決方式:
響應(yīng)式布局leftrightleftright
在不同設(shè)備上正常使用
一般主要處理屏幕大小問題
主要方法
第一步在head中添加viewport的內(nèi)容為width=device-width
隱藏 + 折行 + 自適應(yīng)空間
rem / viewport / media query
媒體查詢中,范圍大的放在上面
面試題
實現(xiàn)兩欄/三欄布局的方法
表格布局
float + margin布局
inline-block布局
flexbox布局
position:absolute/fixed有什么區(qū)別?
前者相對最近的absolute
后者相對于屏幕(viewport)
display:inline-block的間隙
原因:字符間隙
處理:消滅字符或者消滅字符
如何清除浮動?
為什么需要清除:浮動的元素不會占據(jù)父元素的布局空間
讓盒子負責自己的布局
overflow: hidden(auto)
::after(clear:both)(或者使用多帶帶一個元素)
如何適配移動端的頁面?
添加viewport
rem / viewport / media query
設(shè)計上:隱藏 折行 自適應(yīng)
CSS(Cascading Style Sheet)效果 box-shadow
圖片來源:慕課網(wǎng)
默認為外陰影
末尾添加inset表示外陰影
陰影的形狀與原來的圖形一致
作用
營造層次感(立體感)
充當沒有寬度的邊框
實現(xiàn)特殊效果
text-shadow作用:立體感 / 品質(zhì)感
text-shadow:Apx Bpx Cpx #000
A-向右偏移;B-向下偏移;C-模糊
border-radius作用:圓角矩形 / 圓形(50%) / 半圓 / 扇形
有邊框時,使用百分數(shù)更合理,使用像素時計算的是添加邊框?qū)挾群蟮陌霃?/p>
border-radius: A B C D / E F G H:ABCD為水平方向的半徑,EFGH為垂直方向的半徑
扇形示例
.container { width: 100px; height: 100px; background: red; border-top-left-radius: 100px; border-top-right-radius: 0; border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
左上角水平方向10px,垂直方向20px:border-top-left-radius: 10px 20px
background作用:紋理 / 圖案 / 漸變
小技巧:雪碧圖動畫 / 背景圖尺寸適應(yīng)
雪碧圖動圖
將兩個圖標放在同一個圖片中,利用:hover在鼠標飄過時改變background-position的值并添加過度
background-repeat指定是否循環(huán)
background-size
cover保持圖片長寬比不變,覆蓋整個容器,多余的部分不顯示
contain保持圖片長寬比不變,顯示整個圖片,容易多余的部分變?yōu)榭瞻?/p>
clip-path
對容器進行裁剪(常見幾個圖形 / 自定義路徑)
clip-path: inset(100px, 50px)裁剪成長100px寬50px的矩形 =
clip-path不改變?nèi)萜鲀?nèi)的定位
3D-transform屬性有:translate / scale / skew / rotate9
屬性出現(xiàn)的順序會影響效果
面試題
如何用一個div畫XXX?
box-shadow無限投影
::before
::after
如何產(chǎn)生不占空間的邊框
box-shadow
outline
如何實現(xiàn)圓形元素
border-radius:50%
如何實現(xiàn)IOS圖標的圓角
clip-path:(svg)
如何實現(xiàn)半圓、扇形等圖形
border-radius組合 :有無邊框 / 邊框粗細 / 圓角半徑
如何實現(xiàn)背景圖居中顯示 / 不重復(fù) / 改變大小
background-position
background-repeat
background-size(cover / contain)(如果是百分數(shù),則其是相對于容器的大?。?/p>
如何實現(xiàn)3D效果
perspective:500px
transform-style:preserve-3d
transform: translate / rotate
CSS(Cascading Style Sheet)動畫 概述
原理
大腦暫存動畫
作用
愉悅感 / 引起注意 / 反饋 / 掩飾
transition補間動畫位置-平移(left / right / margin / transform)
方位-旋轉(zhuǎn)(transform)
大小-縮放(transform)
透明度(opacity)
其他-線性變換(transform)
屬性
transition-delay:延遲多久才執(zhí)行補間動畫
transition-timing-function:定義動畫進度和時間的關(guān)系
可在devtools/elements/animatiom查看動畫
可在https://www.w3cways.com/css3-...上定制動畫
keyframes關(guān)鍵幀動畫相當于多個補間動畫,與元素狀態(tài)的變化無關(guān),定義更加靈活
屬性名:animation
具體屬性名
animation-direction定義方向
animation-iteration-count定義動畫循環(huán)次數(shù)
animation-play-state設(shè)置動畫狀態(tài)(可結(jié)合JS來實現(xiàn)更加酷炫的應(yīng)用)
animation-fill-mode設(shè)置動畫完成后的狀態(tài)
定義動畫
/* from/to可以使用百分數(shù) */ @keyframes animation-run{ from{ width:100px; } to{ width:800px } }逐幀動畫
特點:適用于無法補間計算的動畫 / 資源較大
使用animation- timing-function:steps(1)
面試題
CSS動畫的語法
參考以上筆記
CSS動畫的實現(xiàn)方式有幾種
transition
keyframes(animation)
過渡動畫與關(guān)鍵幀動畫的區(qū)別
過渡動畫需要有狀態(tài)變化
關(guān)鍵幀動畫不需要狀態(tài)變化
關(guān)鍵幀動畫能控制得更精細
CSS動畫的性能
性能不壞
部分情況下優(yōu)于JS
但JS可以做得更好
部分高危屬性性能較差,如bax-shadow
CSS(Cascading Style Sheet)預(yù)處理器 概述
特點
基于CSS的另一種語言
可以通過工具將其編譯成CSS
添加了很多CSS不具備的特性,如變量等
能提升CSS文件的組織
目前主流:Less / Sass
功能
嵌套,反映層級和約束
變量和計算,減少重復(fù)代碼
Extend和Mixin,代碼片段
循環(huán),適用于復(fù)雜有規(guī)律的樣式
import,CSS文件模塊化
Sass嵌套后綴名為.scss。
.outter { background: red; .inner{ background: green; } }Sass變量
變量是可以計算的。
/* 變量定義 */ $fontSize: 20px; $bgColor: red; /* 變量使用 */ .content { background: $bgColor; font-size: $fontsize; }Sass Mixin
類似于JS的方法。
$fontSize: 20px; /* Mixin 定義 */ @mixin block($fontSize) { font-size: $fontSize; color: red; } /* Mixin 使用 */ .content { @include block($fontSize); .inner { @include block($fontSize + 5px); } }Sass extend
復(fù)用代碼塊
$fontSize: 20px; @mixin block($fontSize) { font-size: $fontSize; color: red; } /* extend 定義 */ .block { font-size: $fontSize; color: red; } /* extend 使用 */ .content { @extend .block; background: green; }Sass loop
循環(huán)
/* 示例生成網(wǎng)格系統(tǒng) */ /* 循環(huán) 定義(利用mixin遞歸) */ @mixin gen-col($n) { @if $n > 0 { @include gen-col($n - 1); .col-#{$n} { width: 1000px / 12 * $n; } } } /* 循環(huán) 使用 */ @include gen-col(12); /* 循環(huán) 定義(利用for)并使用 */ @for $i from 1 through 12 { .col-#{$i} { width: 1000px / 12 * $i; } }Sass import
/* Sass中使用 @import 引入文件 */ /* 不同文件的變量、mixin等在被import到同一個文件后可以跨文件調(diào)用 */ @import "./a-scss" @import "./b-scss"CSS預(yù)處理器框架
SASS - Compass
Less - Lesshat / EST
提供現(xiàn)成的mixin
面試題
預(yù)處理器的作用
幫助開發(fā)者更好的組織CSS代碼
提高代碼復(fù)用率
提升可維護性
預(yù)處理器的能力
嵌套,反映層級和約束
變量和計算,減少重復(fù)代碼
Extend和Mixin,代碼片段
循環(huán),適用于復(fù)雜有規(guī)律的樣式
import,CSS文件模塊化
預(yù)處理器的優(yōu)缺點
優(yōu)點:提高代碼復(fù)用率和可維護性
缺點:需要引入編譯過程,有學(xué)習(xí)成本
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/114333.html
摘要:注本文首發(fā)于個人博客學(xué)習(xí)筆記。最近看了下變量,又名自定義屬性,跟大家分享一下我的學(xué)習(xí)筆記。使用自定義屬性來設(shè)置變量名,并使用特定的來訪問。二學(xué)習(xí)筆記聲明調(diào)用聲明方式變量聲明的方式非常簡單,如下,聲明了一個名叫的變量。 注:本文首發(fā)于個人博客 《CSS Variables學(xué)習(xí)筆記》。 最近看了下CSS Variables(CSS變量,又名CSS自定義屬性),跟大家分享一下我的學(xué)習(xí)筆記。 ...
摘要:三操作過程首先,須把規(guī)則進行處理。后代選擇器空格后代選擇器的作用范圍是父節(jié)點的所有子節(jié)點,因此規(guī)則是在匹配到本標簽的結(jié)束標簽時回退。 筆記說明 重學(xué)前端是程劭非(winter)【前手機淘寶前端負責人】在極客時間開的一個專欄,每天10分鐘,重構(gòu)你的前端知識體系,筆者主要整理學(xué)習(xí)過程的一些要點筆記以及感悟,完整的可以加入winter的專欄學(xué)習(xí)【原文有winter的語音】,如有侵權(quán)請聯(lián)系我,...
摘要:三操作過程首先,須把規(guī)則進行處理。后代選擇器空格后代選擇器的作用范圍是父節(jié)點的所有子節(jié)點,因此規(guī)則是在匹配到本標簽的結(jié)束標簽時回退。 筆記說明 重學(xué)前端是程劭非(winter)【前手機淘寶前端負責人】在極客時間開的一個專欄,每天10分鐘,重構(gòu)你的前端知識體系,筆者主要整理學(xué)習(xí)過程的一些要點筆記以及感悟,完整的可以加入winter的專欄學(xué)習(xí)【原文有winter的語音】,如有侵權(quán)請聯(lián)系我,...
摘要:三操作過程首先,須把規(guī)則進行處理。后代選擇器空格后代選擇器的作用范圍是父節(jié)點的所有子節(jié)點,因此規(guī)則是在匹配到本標簽的結(jié)束標簽時回退。 筆記說明 重學(xué)前端是程劭非(winter)【前手機淘寶前端負責人】在極客時間開的一個專欄,每天10分鐘,重構(gòu)你的前端知識體系,筆者主要整理學(xué)習(xí)過程的一些要點筆記以及感悟,完整的可以加入winter的專欄學(xué)習(xí)【原文有winter的語音】,如有侵權(quán)請聯(lián)系我,...
摘要:第二種情況控制樣式如果的值為那么樣式就是,否則就是寫在最后對于的屬性綁定和的屬性綁定是一樣一樣的。對于文章中所用的代碼是結(jié)合了學(xué)習(xí)筆記之數(shù)據(jù)綁定上面的例子做的,鏈接地址 簡介 基本HTML屬性 Css 類綁定 CSS 類綁定,[class] 全部替換的例子 CSS 類綁定,[class.sepcial] 部分替換的例子 CSS 類綁定,[ngClass] 替換多個的...
閱讀 2331·2021-11-24 10:27
閱讀 3576·2019-08-30 15:55
閱讀 3340·2019-08-30 15:53
閱讀 2342·2019-08-29 17:27
閱讀 1427·2019-08-26 13:47
閱讀 3547·2019-08-26 10:28
閱讀 912·2019-08-23 15:59
閱讀 2849·2019-08-23 15:19