成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

哪些你知道或不知道的css,在這里或許都齊全

Jackwoo / 2397人閱讀

摘要:簡單就意味著更快的開發(fā)速度,更小的維護(hù)成本,同時往往具有更好的體驗(yàn)下面我介紹哪些或許你不知道小技巧。默認(rèn)為,此時陰影與元素同樣大。如果沒有指定,則由瀏覽器決定通常是的值,不過目前取透明。首先,我們要明白這里的最小寬度值是什么意思。

暑假實(shí)習(xí)的時候帶我的師傅,告訴我要注重基礎(chǔ),底層實(shí)現(xiàn)原理。才能在日新月異的技術(shù)行業(yè)站住腳跟,以不變應(yīng)萬變,萬丈高樓平地起,所以我們應(yīng)該不斷的去學(xué)習(xí),去交流。交流,不應(yīng)該僅僅停留在技術(shù)方面,更多的應(yīng)該是在思維方式。語言只是一種工具,編程的思想才是核心。我們只有在明白了編程的思想之后,才能去創(chuàng)造屬于自己的東西,隨意切換。授之以魚不如授之以漁。在我們的時代應(yīng)該是去創(chuàng)造而不是模仿?;氐綄W(xué)校之后,我開始我學(xué)習(xí)的新旅程;讀一本好書亦如交一個有趣的朋友。最近讀了一本《CSS揭秘》,里面有很多有意思的CSS技巧,有時間有興趣的朋友可以去讀讀這本書,讀完之后我們可以一起交流,學(xué)習(xí),一起解答你我的迷惑知識點(diǎn),期待和你的交流。讀完這本書的時候我也對書中的知識點(diǎn)進(jìn)行了總結(jié)歸納:

有問題歡迎討論sunseekers

本文所有鏈接均來自《CSS揭秘》,內(nèi)容基本都來自原書

css編碼技巧

盡量減少代碼重復(fù)的重復(fù),盡量減少改動時要編輯的地方,易維護(hù),性能高;

使用css變量,currentColor,inherit...目前css變量很少,兼容性有待改善

響應(yīng)式網(wǎng)頁設(shè)計(jì),每個媒體查詢都會增加成本;避免媒體查詢

使用百分比長度來取代固定長度,或者使用與視口相關(guān)的單位(vw,vh,vmin,vmax),她們的值解析為視口寬度或高度的百分比

當(dāng)你需要在較大分辨率下得到固定寬度, 使用max-width代替width,因?yàn)樗梢赃m應(yīng)較小的分辨率,而無需使用媒體查詢

替換元素(img,object,video,iframe)設(shè)置一個max-width值為100%;

圖片元素以行列式進(jìn)行布局時,讓視口的寬度來決定列的數(shù)量,彈性和布局(flexbox,display:inline-block);

使用多列文本時,指定column-width(列寬)而不是指定column-count(列數(shù)),目的他就可以在較小的屏幕上自動顯示單列布局

合理使用簡寫

合理使用簡寫,是一種良好的防衛(wèi)性編碼方式,可以抵御未來的風(fēng)險;

css小技巧

為什么說能使用html/css解決的問題就不要使用JS呢?兩個字,因?yàn)楹唵?。簡單就意味著更快的開發(fā)速度,更小的維護(hù)成本,同時往往具有更好的體驗(yàn);下面我介紹哪些或許你不知道css小技巧。

半透明邊框

實(shí)現(xiàn)半透明邊框可以有很多的實(shí)現(xiàn)方法,比如:偽元素和定位相結(jié)合,多層div包裹和定位相結(jié)合...,一千個讀者就有一千個哈利波特,每個人都有一套自己的實(shí)現(xiàn)方法,或許那都不是最優(yōu)的;

問題:代碼量有點(diǎn)多,不符合我前面說的css編程技巧,在實(shí)際中會出現(xiàn)各種我們想象不到的bug;

解決:利用背景的工作原理,背景與邊框的關(guān)系;

background-clip:設(shè)置元素的背景(背景圖片或者顏色)是否延伸到邊框下面;重點(diǎn)在切割的位置

border-box: 默認(rèn)情況 背景延伸到邊框外延(但是在邊框之下)

padding-box: 邊框下面沒有背景,即背景延伸到內(nèi)邊距外延

content-box: 背景裁剪到內(nèi)容去外延

自己動手敲的實(shí)現(xiàn)的效果圖如下:

試一試

靈活背景定位

有時候我們希望圖片和容器的邊角之間能留出一定的空隙,類似padding的效果,對于固定尺寸大小的容器來說我們可以利用 background-position 實(shí)現(xiàn),但是內(nèi)容往往是不固定?background-position的值和padding一致也可實(shí)現(xiàn),但是每次修改都要三個地方,代碼不夠DRY

解決:background-origin calc()

background-origin: 規(guī)定了指定背景圖片background-image 屬性的原點(diǎn)位置的背景相對區(qū)域,重點(diǎn)在background-position位置的源點(diǎn)

border-box: 背景將會延伸到延伸到外邊界的邊框,而且是「邊框在上、背景在下」,這個用border-style 為dashed可以直接看得出來

padding-box:>默認(rèn)情況 背景描繪在padding盒子,邊框里不會有背景出現(xiàn)。同樣,背景將會延伸到最外邊界的padding.

content-box:背景描繪在內(nèi)容區(qū)范圍.

試一試

自己動手敲的實(shí)現(xiàn)的效果圖如下:

試一試

多重邊框

你還在用多個元素層層包裹來模擬多重邊框嗎?不,我在用偽元素實(shí)現(xiàn),哈哈。但是她們都需要我們添加額外的元素,或者大量的代碼來污染我們的結(jié)構(gòu)

解決方案:box-shadow,outline

box-shadow: 向框添加一個或多個陰影;

inset : 默認(rèn)陰影在邊框外。

使用inset后,陰影在邊框內(nèi)(即使是透明邊框),背景之上內(nèi)容之下。

offset-x,offset-y :

這是頭兩個 length 值,用來設(shè)置陰影偏移量。offset-x 設(shè)置水平偏移量,如果是負(fù)值則陰影位于元素左邊。 offset-y 設(shè)置垂直偏移量,如果是負(fù)值則陰影位于元素上面??捎脝挝徽埐榭?length 。
如果兩者都是0,那么陰影位于元素后面。這時如果設(shè)置了 blur-radius 或 spread-radius 則有模糊效果。

blur-radius :

這是第三個 length 值。值越大,模糊面積越大,陰影就越大越淡。 不能為負(fù)值。默認(rèn)為0,此時陰影邊緣銳利。

spread-radius :

這是第四個 length 值。取正值時,陰影擴(kuò)大;取負(fù)值時,陰影.收縮。默認(rèn)為0,此時陰影與元素同樣大。

color

邊框的 color 。如果沒有指定,則由瀏覽器決定——通常是color的值,不過目前Safari取透明。

如果你只需要兩層,那就可以設(shè)置一層常規(guī)的邊框,再加上outline(描邊)屬性來產(chǎn)生內(nèi)外層邊框;
例如我們常見的:

outline: 是用來設(shè)置一個或多個多帶帶的輪廓屬性的簡寫屬性 , 例如 outline-style, outline-width 和 outline-color;輪廓不占據(jù)空間,它們被描繪于內(nèi)容之上

outline-offset: 一個元素邊緣或邊框之間的間隙;

試一試

邊框內(nèi)圓角

有時候我們需要一個容器,只有內(nèi)側(cè)有圓角,邊框或者描邊的四個角在外部仍然保持直角形狀

解決方案:box-shadow和outline結(jié)合

實(shí)現(xiàn)原理: outline(描邊)不會跟著元素的圓角走(因而顯示直角);box-shadow卻是會跟著元素走的;,兩者相結(jié)合,box-shadow會填補(bǔ)描邊和容器圓角之間的空隙;

試一試

連續(xù)的圖像邊框

有時候我們想把一副圖案應(yīng)用為邊框,而不是背景?你或許會想到border-image,但是行不通,border-image他的原理基本上就是九宮格伸縮法,把圖片切割成九塊,然后把她們應(yīng)用到元素邊框相應(yīng)的邊和角

border-image的工作原理:

效果圖如上所示:

解決方案:css漸變和背景的擴(kuò)展,在背景圖之上在加一層純色實(shí)色背景,給兩層背景指定不同的background-clip;
漸變是可以和背景圖片一起使用的,而且背景圖片的預(yù)發(fā)和平時的寫法是一樣的。而且寫在前面的優(yōu)先級會比較高,會蓋在后面的圖片上面

試一試

平行四邊形

有沒有辦法只讓容器的形狀傾斜而保持其內(nèi)容不變呢?或許你會想到嵌套兩層元素,外層skew(),對內(nèi)容在應(yīng)用一次反相skew變形,從而抵消變形的效果。但是意味著我們不得不使用一層額外的HTML元素包裹內(nèi)容.有些累贅

解決方案:偽元素,把樣式應(yīng)用到偽元素上,對偽元素進(jìn)行變形,再把偽元素定位+層級放到到住宿元素下面

光說不練,假把式試一試

梯形標(biāo)簽頁

在網(wǎng)頁中我們經(jīng)常見到梯形形狀的標(biāo)簽頁,常見的技巧都是比較雜亂,或者說難以維護(hù)的,那他們是如何實(shí)現(xiàn)的呢?

解決方案: 三維世界中旋轉(zhuǎn)一個矩形,由于透視關(guān)系,我們在二維圖像上看到一個梯形,再結(jié)合平行四邊實(shí)現(xiàn)的方法便能實(shí)現(xiàn)

perspective: 觀察者與z=0平面的距離;

對元素使用了3D變形之后,其內(nèi)部的變形效應(yīng)是"不可逆轉(zhuǎn)的",和2D變形不同(2D變形內(nèi)部的逆向變形可以抵消外部的變形效應(yīng));

為了讓他的尺寸更好掌握,我們可以為他指定transform-origin:bottom;也可用scale()對他在進(jìn)行美觀操作;


試一試

簡單的餅圖

餅圖在網(wǎng)頁中的運(yùn)用極為常見,比如簡單的統(tǒng)計(jì)表,進(jìn)度指示器,如果我們不用圖像處理器,和JavaScript,那要如何去實(shí)踐呢?

解決方案:偽元素,變形屬性和css漸變實(shí)現(xiàn)

1.把這個元素設(shè)置為一個圓形;

2.用一個簡單線性漸變來把圖像的有半部分設(shè)為其他顏色

3.用偽元素覆蓋到這個元素的漸變區(qū)域上面去(看起來這個元素和第一步效果一樣),通過旋轉(zhuǎn)來決定漏出多大扇區(qū);

試一試

如果我們想要看到一個靜態(tài)的不同比率的餅狀圖哪有如何解決呢?

解決方案: 很簡單,我們只需將上面用到的那個動畫處于暫停狀態(tài)就好了
animation-play-state: paused;
animation-delay: 設(shè)置為負(fù);負(fù)的動畫延時,讓動畫一開始就直接跳至設(shè)置的時間點(diǎn)。即負(fù)負(fù)得正;

試一試

自適應(yīng)內(nèi)部元素

如果不給一個元素指定具體的height,他就會自動適應(yīng)其內(nèi)容的高度,如果我們希望width也具有類似的行為該怎么實(shí)現(xiàn)呢??

解決方案: css內(nèi)部與外部尺寸模型:min-content

max-content,min-content,fit-content

min-content:寬度表示的并不是內(nèi)部那個寬度小就是那個寬度,而是,采用內(nèi)部元素最小寬度值最大的那個元素的寬度作為最終容器的寬度。

首先,我們要明白這里的“最小寬度值”是什么意思。替換元素,例如圖片的最小寬度值就是圖片呈現(xiàn)的寬度,對于文本元素,如果全部是中文,則最小寬度值就是一個中文的寬度值;如果包含英文,因?yàn)槟J(rèn)英文單詞不換行,所以,最小寬度可能就是里面最長的英文單詞的寬度。So,大家明白的說。

試一試

滿幅的背景,定寬的內(nèi)容

類似的布局我們在網(wǎng)頁中經(jīng)常遇見,通常是在頁腳和導(dǎo)航;如果我們只使用一個元素該如實(shí)現(xiàn)這個效果呢?
解決方案calc()函數(shù)

margin:0 auto;所產(chǎn)生的左右外邊距實(shí)際上都等于視口寬度的一半減去內(nèi)容寬度的一半;
因此我們可以使用margin:0 calc(50%-width/2);

如果你覺得還有疑慮的話:試一試

垂直居中

在css中對元素進(jìn)行水平居中垂直居中,我們在頁面布局的時候會經(jīng)常用到。相信每個人都有一套自己實(shí)現(xiàn)的方式;
我想介紹一下FlexBox的解決方案

display: flex;

align-items:垂直方向上的對齊方式;

justify-content:水平方向上的對齊方式;

試一試我推薦的方案吧!試一試

緊貼底部的頁腳

一個具有塊級樣式的頁腳,當(dāng)頁面內(nèi)容足夠長時他一切正常,但是當(dāng)頁面比較短時,就會出現(xiàn)問題;頁腳就不能像我們期望中那樣緊貼在視口的最底部,而是在內(nèi)容的下方

解決方案:flex彈性布局

flex屬性是flex-grow, flex-shrink 和 flex-basis的簡寫,默認(rèn)值為0 1 auto。后兩個屬性可選。

flex-grow:定義項(xiàng)目的放大比例。默認(rèn)0,不放大。1等分剩余空間

flex-shrink:項(xiàng)目的縮小比例默認(rèn)為1,如果空間不足,等比縮小

flex-basis:項(xiàng)目占據(jù)主軸空間

試一試

緩動效果

給過渡和動畫加上緩動效果是一種流行的表現(xiàn)手法,可以讓界面顯得更加生動和真實(shí),但是在現(xiàn)實(shí)世界中,物體從a到b點(diǎn)的移動往往不是 完全勻速的,因此我們需要對動畫效果加以調(diào)整,使得更加逼真

解決方案:我們可以用animation-timing-function的調(diào)速函數(shù)和反向版本,模擬現(xiàn)實(shí)世界的速度變化css的transform只對塊級元素有用

如果是反反復(fù)復(fù)的循環(huán)函數(shù),我們也可以用可用animation-direction來反轉(zhuǎn)循環(huán)的周期函數(shù);

animation-direction:reverse;反轉(zhuǎn)每一個循環(huán)周期;

animation-direction:alternate;反轉(zhuǎn)第偶數(shù)循環(huán)周期;

animation-direction:alternate-reverse;反轉(zhuǎn)第奇循環(huán)周期;

首先介紹一下animation-timing-function

animation-timing-function:屬性定義CSS動畫在每一動畫周期中執(zhí)行的節(jié)奏??赡苤禐橐换蚨鄠€;(ease-in,ease-out,ease-in-out,linear,steps(),cubic-bezier());

cubic-bezier()函數(shù),允許我們指定自定義調(diào)速函數(shù);cubic-bezier(x1,y1,x2,y2);(x1,y1)表示第一個-P1控制錨點(diǎn)的坐標(biāo),(x2,y2),表示第二個-P2;曲線的片段分別固定在(0,0)-P0起點(diǎn),(1,1)-P4終點(diǎn);

我們需要關(guān)注的是 P1 和 P2 兩點(diǎn)的取值,而其中 X 軸的取值范圍是 0 到 1,當(dāng)取值超出范圍時 cubic-bezier 將失效;Y 軸的取值沒有規(guī)定,當(dāng)然也毋須過大。

把控制錨點(diǎn)的水平坐標(biāo)和垂直坐標(biāo)互換,就可以得到任何調(diào)速函數(shù)的反向版本
"

steps():是一個階躍函數(shù),用于把整個操作領(lǐng)域切分為相同大小的間隔,每個間隔都是相等的。

steps 第一個參數(shù)指定了時間函數(shù)中的間隔數(shù)量(必須是正整數(shù));第二個參數(shù)可選,接受 start 和 end 兩個值,指定在每個間隔的起點(diǎn)或是終點(diǎn)發(fā)生階躍變化,默認(rèn)為 end。

彈跳動畫,球體自由落體運(yùn)動,在下降的過程中勻加速我們可用ease-out;彈起方向是勻減速我們可用ease-in;

動手看效果吧!試一試

逐幀動畫

有時候我們想要實(shí)現(xiàn)連續(xù)的動畫幀,動畫幀之間然不需要過渡的狀態(tài)。而我們在實(shí)現(xiàn)中往往會失敗?

解決方案:steps()會根據(jù)你指定的步數(shù)量,把整個動畫切分為多個針,而且整個動畫幀與幀之間硬切,不會有任何過渡效果

step-start和step-end是steps(1,start)和steps(1,end)的簡寫;

動手看效果吧!試一試

16. 沿環(huán)形平移的動畫

當(dāng)一個元素沿著環(huán)形進(jìn)行移動的同時,我們希望它能保存自己原本的的朝向。那我們該如何去實(shí)現(xiàn)呢?或許你已經(jīng)有了你的方法啦!但我的方法可能會比你的更加優(yōu)化

我們可以用前面介紹的嵌套的兩層相互抵消,用內(nèi)層的變形來抵消外層變形的效果;即兩層的旋轉(zhuǎn)方向相反;

動手看效果吧!試一試

但是這樣還不是特別理想,如果只用一個元素那要怎么去實(shí)現(xiàn)呢?

transform-origin只是一個語法糖,實(shí)際上你總是可以用translate()來代替;變形函數(shù)并不是孤立存在;如下圖可證實(shí):

這個原理我目前還不是特別能夠理解,但你可以試試
試一試

自定義復(fù)選框

我們對于美得追求是永無止境的,但是復(fù)選框,單選框的樣式的樣式總是不如我們?nèi)缫?。雖然js能夠?qū)崿F(xiàn)效果,但是代碼停臃腫。那我們有什么去實(shí)現(xiàn)呢?

解決方案::checked偽類,這個偽類只有在復(fù)選框被勾選時才會匹配,不論是由用戶交互觸發(fā),還是有腳本觸發(fā)

當(dāng)< label > 元素與復(fù)選框關(guān)聯(lián)之后,可以起到觸發(fā)開關(guān)的作用

label 不是復(fù)選框那樣的替換元素,我們可以為他添加生成性內(nèi)容(偽元素),并基于復(fù)選框的狀態(tài)來為其設(shè)置樣式,然后把真正的復(fù)選框隱藏起來(但不能把它從tab鍵切換焦點(diǎn)的隊(duì)列中完全刪除),再生成性內(nèi)容美化一番,用來頂替原來的復(fù)選框!

可替換元素就是瀏覽器根據(jù)元素的標(biāo)簽和屬性,來決定元素的具體顯示內(nèi)容

例如瀏覽器會根據(jù)標(biāo)簽的src屬性的值來讀取圖片信息并顯示出來,而如果查看(x)html代碼,則看不到圖片的實(shí)際內(nèi)容;又例如根據(jù)標(biāo)簽的type屬性來決定是顯示輸入框,還是單選按鈕等。

試一試

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/115578.html

相關(guān)文章

  • 哪些知道知道css,這里許都齊全

    摘要:簡單就意味著更快的開發(fā)速度,更小的維護(hù)成本,同時往往具有更好的體驗(yàn)下面我介紹哪些或許你不知道小技巧。默認(rèn)為,此時陰影與元素同樣大。如果沒有指定,則由瀏覽器決定通常是的值,不過目前取透明。首先,我們要明白這里的最小寬度值是什么意思。 暑假實(shí)習(xí)的時候帶我的師傅,告訴我要注重基礎(chǔ),底層實(shí)現(xiàn)原理。才能在日新月異的技術(shù)行業(yè)站住腳跟,以不變應(yīng)萬變,萬丈高樓平地起,所以我們應(yīng)該不斷的去學(xué)習(xí),去交流。...

    Bryan 評論0 收藏0
  • 哪些知道知道css,這里許都齊全

    摘要:簡單就意味著更快的開發(fā)速度,更小的維護(hù)成本,同時往往具有更好的體驗(yàn)下面我介紹哪些或許你不知道小技巧。默認(rèn)為,此時陰影與元素同樣大。如果沒有指定,則由瀏覽器決定通常是的值,不過目前取透明。首先,我們要明白這里的最小寬度值是什么意思。 暑假實(shí)習(xí)的時候帶我的師傅,告訴我要注重基礎(chǔ),底層實(shí)現(xiàn)原理。才能在日新月異的技術(shù)行業(yè)站住腳跟,以不變應(yīng)萬變,萬丈高樓平地起,所以我們應(yīng)該不斷的去學(xué)習(xí),去交流。...

    fai1017 評論0 收藏0
  • PHP中被忽略性能優(yōu)化利器:生成器

    摘要:所以,在調(diào)用函數(shù)時候會占用大量內(nèi)存。首先調(diào)用函數(shù),傳入?yún)?shù),但是值執(zhí)行了一次然后停止了,并且告訴第一次循環(huán)可以用的值。 如果是做Python或者其他語言的小伙伴,對于生成器應(yīng)該不陌生。但很多PHP開發(fā)者或許都不知道生成器這個功能,可能是因?yàn)樯善魇荘HP 5.5.0才引入的功能,也可以是生成器作用不是很明顯。但是,生成器功能的確非常有用。 優(yōu)點(diǎn) 直接講概念估計(jì)你聽完還是一頭霧水,所以我...

    魏明 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<