Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
許,你認(rèn)為 CSS 只能用來(lái)控制網(wǎng)頁(yè)的結(jié)構(gòu)與樣式,但它的功能和應(yīng)用卻超乎你的想象。從逼真的圖像到特效動(dòng)畫(huà),優(yōu)秀的開(kāi)發(fā)者利用它已創(chuàng)造了無(wú)數(shù)種可能。
在本文中,我們精選了純 CSS 實(shí)現(xiàn)的濾鏡以及各種效果,與大家分享。它們都是開(kāi)源的網(wǎng)頁(yè)設(shè)計(jì)相關(guān)項(xiàng)目。除了體驗(yàn)之外,有興趣的話,你還可以嘗試來(lái)實(shí)現(xiàn)它們。
哇!如果你對(duì)太空?qǐng)鼍扒橛歇?dú)鐘,那么一定會(huì)被這個(gè) CSS 實(shí)現(xiàn)的太陽(yáng)系動(dòng)畫(huà)所震撼。作為空間學(xué)與物理學(xué)愛(ài)好者,作者參照了太陽(yáng)系軌道運(yùn)行的真實(shí)時(shí)間進(jìn)行設(shè)計(jì),意味著每個(gè)行星都有相對(duì)地球年的時(shí)間,準(zhǔn)確的圍繞太陽(yáng)公轉(zhuǎn)。
項(xiàng)目地址:
https://codepen.io/kowlor/pen/ZYYQoy
對(duì)于網(wǎng)站性能來(lái)說(shuō),動(dòng)畫(huà)是眾人皆知的問(wèn)題引發(fā)者。如果優(yōu)化不佳,它們會(huì)直接影響頁(yè)面的打開(kāi)速度。而這個(gè) CSS 實(shí)現(xiàn)的漂亮的漸變動(dòng)畫(huà),卻相當(dāng)?shù)妮p量,不僅易于編輯,而且支持自定義顏色。
項(xiàng)目地址:
https://codepen.io/P1N2O/pen/pyBNzX
實(shí)現(xiàn)一款簡(jiǎn)單的游戲,并不一定需要 JS 的幫助,純 CSS 也能夠創(chuàng)造一款界面漂亮的 Stack 游戲。當(dāng)然,游戲看似容易,背后的設(shè)計(jì)并非那么簡(jiǎn)單。
項(xiàng)目地址:
https://codepen.io/finnhvman/pen/xJRMJp
這是一款漂亮、輕量、易于定制的進(jìn)度條開(kāi)源項(xiàng)目。進(jìn)度條采用 3D 制作,同時(shí)擁有清澈的外觀,你甚至可以將它們變成迷你 3D 圖表!
項(xiàng)目地址:
https://codepen.io/rgg/pen/QbRyOq
故障風(fēng)格的文本總會(huì)讓人有眼前一亮的感覺(jué),而這個(gè)項(xiàng)目就是純 CSS 實(shí)現(xiàn)的故障效果。如果你想為網(wǎng)站增添酷炫的故障效果,那么不妨多了解下。
項(xiàng)目地址:
https://codepen.io/lbebber/pen/ypgql
CSS 的能量超乎你想象,你甚至還可以利用它制作出藝術(shù)品效果。Francine 就是一個(gè)純 CSS 制作、展示的 18 世紀(jì)風(fēng)格的繪畫(huà)作品。或許,你會(huì)驚訝 CSS 實(shí)現(xiàn)的效果竟能如此逼真。
項(xiàng)目地址:
https://github.com/cyanharlow/purecss-francine
這個(gè)項(xiàng)目與《Francine》有異曲同工之處,它僅使用 CSS 和 HTML 便實(shí)現(xiàn)了手機(jī)界面效果,而且效果可以同網(wǎng)站照片相媲美。如果你有興趣,可詳細(xì)的了解其實(shí)現(xiàn)的過(guò)程。
項(xiàng)目地址:
https://codepen.io/Wujek_Greg/pen/LmrweG
利用 JS 創(chuàng)造一個(gè)簡(jiǎn)單的 3D 地圖?不用那么復(fù)雜,純 CSS 就可以搞定。怎么樣,看上去還不錯(cuò)吧!
項(xiàng)目地址:
https://codepen.io/onediv/pen/NrNebj
想為你的網(wǎng)站添加一些 Instagram 風(fēng)格的圖片濾鏡效果?那么,純 CSS 實(shí)現(xiàn)的 Instagram 風(fēng)格的濾鏡庫(kù) —— Instagram.css 一定是你的菜。它的靈感來(lái)源于 CSSgram.
項(xiàng)目地址:
https://picturepan2.github.io/instagram.css/
這是一個(gè)純 CSS 實(shí)現(xiàn)的漸變幽靈按鈕。漂亮的動(dòng)畫(huà)和漸變效果,是不是很酷呢?相信,它可以很好的融入到任何網(wǎng)站之中。
項(xiàng)目地址:
https://codepen.io/ARS/pen/vEwEPP
如果你想在網(wǎng)站增添 iPhone X、iPhone 8 等移動(dòng)設(shè)備用于展示的話,那么一定不要錯(cuò)過(guò) Devices.css. 它是一個(gè)使用了純 CSS 實(shí)現(xiàn)主流移動(dòng)設(shè)備的庫(kù),并以現(xiàn)代設(shè)備為模版。
項(xiàng)目地址:
https://picturepan2.github.io/devices.css/
這是一個(gè)很酷的純 CSS 實(shí)現(xiàn)的項(xiàng)目。你只需要通過(guò)電腦自帶的選色器,就能輕松地更換圖像的顏色,來(lái)試試吧!
項(xiàng)目地址:
https://codepen.io/noahblon/pen/ZbjmbK
利用 JS,我們能實(shí)現(xiàn)各種讓人驚嘆的頁(yè)面/動(dòng)畫(huà)效果,但 JS 并不是最輕量的解決方案。如果合理使用 CSS,你依然可以實(shí)現(xiàn)一些炫酷的效果,并且它對(duì)性能的影響會(huì)小得多。當(dāng)然,無(wú)論你使用哪種方式(JS or CSS),你都可以創(chuàng)造出創(chuàng)意且有趣的作品。
以上的作品,你最喜歡哪一個(gè)?歡迎評(píng)論與我們分享。
感謝你的閱讀。若你有所收獲,歡迎點(diǎn)贊與分享。
注:
英文原文:12 Incredible Pure CSS Experiments
作者:Brenda Stokes Barron
譯者:IT程序獅
譯文地址:
https://zhuanlan.zhihu.com/p/58424141
ss是前端領(lǐng)域的一個(gè)難纏戶,一提到css,沒(méi)有人會(huì)說(shuō)難,也沒(méi)有人愿意承認(rèn)自己不會(huì)寫(xiě),甚至在面試的過(guò)程中css相關(guān)的內(nèi)容都很少提及,足以說(shuō)明大家對(duì)css的不重視。你真的會(huì)寫(xiě)css嗎?
關(guān)于css有兩類問(wèn)題值得我們重視:樣式和工程。樣式問(wèn)題指的是具體的效果實(shí)現(xiàn),能否實(shí)現(xiàn)某個(gè)效果,同一個(gè)效果有多種實(shí)現(xiàn)方式,如何抉擇;工程問(wèn)題是如何在大型項(xiàng)目中寫(xiě)出可維護(hù)性、可讀的css。
在各種論壇中經(jīng)常看到關(guān)于css是否是一門(mén)編程語(yǔ)言的爭(zhēng)論。在我看來(lái),最好用對(duì)待編程語(yǔ)言的態(tài)度來(lái)看待css,不要忽視css,否則,在項(xiàng)目后期,你會(huì)發(fā)現(xiàn),你的css越來(lái)越混亂,important會(huì)越來(lái)越多,不同位置的類名互相沖突覆蓋,改一個(gè)類的樣式,要檢查整個(gè)項(xiàng)目的頁(yè)面是否受到影響,項(xiàng)目?jī)?nèi)部的css共享完全依賴拷貝……從這個(gè)角度來(lái)說(shuō),你敢說(shuō)css不是編程語(yǔ)言?它完全有了像編程語(yǔ)言一樣能把你搞得焦頭爛額的能力。而這一切都來(lái)源于你在一開(kāi)始對(duì)她的忽視與不屑。出來(lái)混,總要還的啊!
盲目的定義基礎(chǔ)樣式
在項(xiàng)目開(kāi)始之初,拿到UI設(shè)計(jì)稿,信心滿滿地開(kāi)始定義css的全局基礎(chǔ)樣式,謝天謝地,css對(duì)這一點(diǎn)支持得很徹底,一處定義,所有頁(yè)面都可以引用。
先來(lái)一個(gè)color-red。
.color-red {
color: red
}
這樣,在整個(gè)項(xiàng)目中,都可以給任意元素添加一個(gè)color-red類,美滋滋,我真是個(gè)小機(jī)靈鬼!
幾個(gè)迭代過(guò)去,你已經(jīng)把color-red這面紅旗插滿了整個(gè)項(xiàng)目。UED說(shuō),咱們改個(gè)版,所有紅色的文本改為藍(lán)色,紅色的link不變!
嗶!——(你發(fā)出的聲音)
你又得屁顛屁顛地把一個(gè)一個(gè)的紅旗拔出來(lái),再插上藍(lán)色的旗子(因?yàn)槟悴桓也桓裳剑?/p>
命名沖突
在一個(gè)頁(yè)面,你定義了一個(gè).header,寫(xiě)了個(gè)完美的特效,發(fā)布到dev一看,就是不管用,橫看豎看,本地是好的啊,神奇(生氣)!過(guò)了若干時(shí)間的排查,另一個(gè)同事在另一個(gè)地方也寫(xiě)了一個(gè).header,完美的覆蓋了你的。把你頭打歪!
編輯器可不會(huì)提醒你哦!
慢慢你會(huì)發(fā)現(xiàn),這種命名沖突可太頻繁了呀!頭大,要不要用上css modular啊?
子類覆蓋
有的小伙伴聰明地將類名嵌套定義,這就不會(huì)沖突了吧?嘿嘿,你想多了!
/* in article.css */
.article .title {
border-bottom: 1px solid;
font-size: 1.5em;
}
/* in widget.css */
.widget .title {
color: gray;
text-transform: uppercase;
}
如果在dom樹(shù)里面,article和widget在一棵樹(shù)的路徑上,你說(shuō)title是沖突呢還是不沖突呢?
以上的這些問(wèn)題,在項(xiàng)目中相信大家都遇見(jiàn)過(guò),并且項(xiàng)目越大,出現(xiàn)的概率就越高,最后就會(huì)演變成一座[屎]山。
“大家都別動(dòng),牽一發(fā)而動(dòng)全身哦!”
“這就是蝴蝶效應(yīng)吧???”
難道css這些問(wèn)題就沒(méi)法解決了嗎?當(dāng)然不是,我們來(lái)看看大神們是如何解決這些問(wèn)題的。
BEM是Block、Element、Modifier的縮寫(xiě),是一個(gè)類命名的規(guī)范。
首先我們來(lái)看一個(gè)例子:
/* Block */
.btn {}
/* Element that depends upon the block */
.btn__price {}
/* Modifier that changes the style of the block */
.btn--orange {}
.btn--big {}
相信小伙伴們已經(jīng)有了一個(gè)初步的認(rèn)知:
Block是一個(gè)獨(dú)立的組件(元素),定義的了“組件是什么,按鈕?還是菜單?”。
Element是屬于Block,是依賴于Block的元素,描述的是“Block里面的什么?比如,文本?圖標(biāo)?”
Modifier用于描述Block或者Element的外在表現(xiàn),比如大小、顏色、狀態(tài)等。
看一個(gè)例子:
<form class="search-form search-form_theme_islands">
<input class="search-form__input">
<button class="search-form__button search-form__button_size_m">Search</button>
</form>
search-form是Block;
search-form_theme_islands是Modifier,描述了theme為islands的search-form;
search-form__input是Element,描述的是search-form內(nèi)部的input元素;
search-form__button是Element,描述的是search-form內(nèi)部的button元素;
search-form__button_size_m是Modifier,描述的是size為m的search-form__button;
這樣寫(xiě)css是不是非常的清晰?瞬間就提高了可讀性和可維護(hù)性?
概念如此簡(jiǎn)單,還不趕緊多了解一下?
另外,可能有些小伙伴也注意到了,Block和Element使用雙下劃線分隔,和Modifier是用中劃線分隔,這也不是一成不變的,可以按照自己的喜好來(lái)決定如何分割。
有些小伙伴可能會(huì)有疑問(wèn),BEM和Saas、Css Module有什么區(qū)別?解決的問(wèn)題是一樣的嗎?
Sass是css的預(yù)處理器,在寫(xiě)css的時(shí)候定義了一套規(guī)范,經(jīng)過(guò)編譯處理后輸出為css,和BEM是兩個(gè)不同的概念。使用saas或less也能實(shí)現(xiàn)BEM。BEM其實(shí)是不推崇類名的嵌套定義的,如果想像sass那樣嵌套的寫(xiě)出標(biāo)準(zhǔn)的BEM,可以使用@at-root。
Css Module解決的問(wèn)題是多個(gè)模塊的css的命名沖突問(wèn)題,個(gè)人覺(jué)得是傻瓜式解決方案,在應(yīng)用層的css-in-js應(yīng)用比較多,適合css入門(mén)選手。要想寫(xiě)好css,還是得從根本上入手呀!
最近在 GitHub 上發(fā)現(xiàn)了一個(gè) vanillawebprojects[1] 開(kāi)源倉(cāng)庫(kù),里面收集了 20 個(gè) JavaScript+Html+CSS的練手項(xiàng)目,沒(méi)有使用任何框架,可以讓你從基礎(chǔ)入門(mén)到深入學(xué)習(xí)。這些項(xiàng)目原本是 Udemy 上 20 Web Projects With Vanilla JavaScript 課程的一部分,但是如果你已經(jīng)擁有了一些基礎(chǔ),不妨試著看一下源碼,然后模仿實(shí)現(xiàn)吧
判斷輸入的表單字段是否合法
一個(gè)簡(jiǎn)單的電影座位預(yù)定演示項(xiàng)目
一個(gè)簡(jiǎn)單的網(wǎng)頁(yè)視頻播放器
計(jì)算不同貨幣的兌換匯率
練習(xí)如何操作 DOM 數(shù)組
練習(xí)如何彈出登錄注冊(cè)窗口,以及滑動(dòng)彈出菜單
練習(xí)如何判斷隱藏字符是否正確
簡(jiǎn)單的點(diǎn)餐查詢應(yīng)用
簡(jiǎn)單的購(gòu)物車結(jié)算應(yīng)用
簡(jiǎn)單的網(wǎng)頁(yè)音樂(lè)播放器
網(wǎng)頁(yè)無(wú)限向下滾動(dòng)實(shí)現(xiàn)
簡(jiǎn)單的打字輸入游戲
文本閱讀器
測(cè)試記憶的記憶卡片
網(wǎng)頁(yè)歌詞搜索器
模擬呼吸的節(jié)奏
簡(jiǎn)單的網(wǎng)頁(yè)破冰游戲
網(wǎng)頁(yè)新年倒計(jì)時(shí)
網(wǎng)頁(yè)財(cái)富榜單
說(shuō)出數(shù)字,猜測(cè)數(shù)字
今天我們給大家分享了,20 個(gè) JavaScript+Html+CSS 練手小項(xiàng)目,大家覺(jué)得哪個(gè)最簡(jiǎn)單,哪個(gè)最復(fù)雜呢?趕緊去 Github 倉(cāng)庫(kù)拉取項(xiàng)目,碼上行動(dòng)吧
歡迎關(guān)注公眾號(hào):KnowHub 知識(shí)加油站!
[1]
vanillawebprojects: https://github.com/bradtraversy/vanillawebprojects
*請(qǐng)認(rèn)真填寫(xiě)需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。