在寫靜態(tài)頁面的過程中,想盡量契合HTML5語義化的標(biāo)準(zhǔn),將下面這個(gè)頁面進(jìn)行的修改
(通過語義化的標(biāo)簽和css子選擇器代替了html文件中很多class名字和密密麻麻的div,css文件的類選擇器)
先說得到的結(jié)論吧,查了很多網(wǎng)上的資料。得出的結(jié)論是推薦使用類選擇器(但是我不服)
理由如下:
想問一下大家覺得應(yīng)該如何處理最好?
先說你的想法不靠譜。然后逐點(diǎn)分析:
nth-child。順便給幾個(gè)建議:
我用著也是類選擇器最順手。用class雖然不知道在哪個(gè)層級(jí),但是class如果有明確的語義,相比標(biāo)簽要清晰很多。
html用語義話的標(biāo)簽是個(gè)好習(xí)慣,對(duì)SEO,輔助視覺障礙之類的都有幫助。 但用作CSS來說,卻不好
所以我覺得 用語義話的標(biāo)簽加css的class 這樣比較好
首先我也覺得類選擇器好,其次語義化也要兼顧。(居然有人邀請(qǐng)我回答,不甚惶恐,在下斗膽,廢話一篇)
html主結(jié)構(gòu),css主樣式,語義化標(biāo)簽個(gè)人覺得就像是大綱,方便人看和機(jī)器找,組織頁面大綱的時(shí)候可以盡量使用語義化標(biāo)簽,清晰的表達(dá)出整體結(jié)構(gòu)。
關(guān)于各模塊的設(shè)計(jì)還是推薦類選擇器,此處不管是復(fù)用性還是語義化都是類選擇器更好
注:1、Components(組件), Elements(元素), Variants(變體)類似BEM的Block、Element、Modifier(修飾符)
2、Components 應(yīng)該在不同的上下文中都可以復(fù)用,所以應(yīng)避免設(shè)置以下屬性:
Positioning (position, top, left, right, bottom)
Floats (float, clear)
Margins (margin)
Dimensions (width, height)
3、頭像和 logos 這些元素應(yīng)該設(shè)置固定尺寸
4、倘若你需要為組件設(shè)置定位,應(yīng)將在組件的上下文(父元素)中進(jìn)行處理,比如以下例子中,將 widths和 floats 應(yīng)用在 list component(.article-list) 當(dāng)中,而不是 component(.article-card) 自身。
以上只是些大道理,關(guān)于你的問題描述,以下我大膽的針對(duì)性的猜測(cè)一番。
1、關(guān)于最佳實(shí)踐的問題本就是蘿卜青菜各有所愛,但是不能以主流框架去綁架語言;
2、這是熟練度問題,該找還得找
3、標(biāo)簽加偽類如span:nth-of-type(2)不就確定是父元素的第2個(gè)span標(biāo)簽,還是要找父元素不是嗎?而且當(dāng)你面對(duì)一堆一模一樣的標(biāo)簽和數(shù)字,然后父級(jí)還都是section的時(shí)候,真的好嗎?我感覺你是在改別人的代碼,所以才不順暢吧
說明:你說的密密麻麻的div怕是后端寫的吧,本身ul/h1/span/p這些都是語義化標(biāo)簽,就算用類選擇器,這些也都是用上的
最關(guān)鍵的是類名比較靈動(dòng),可以方便實(shí)現(xiàn)css動(dòng)效,和組件變體等
最常見的就是active類實(shí)現(xiàn)狀態(tài)切換以及animated之類,還有如下組件樣式變換只需添加row類
.prodcut-list {
padding: 0.07rem 0.07rem;
overflow: hidden;
width: 100%;
.product-item {
padding: 0.07rem;
width: 50%;
float: left;
.product-info {
box-shadow: 2px 3px 4px #f7f7f7;
border-radius: 0.03rem;
padding: 0 0 .1rem;
.p-img {
padding-top: 100%;
background: url(//timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1534855844770&di=35ecd715771d17f496bda394d0b1fb3a&imgtype=0&src=http%3A%2F%2Fimage20.it168.com%2F201403_800x800%2F1782%2Fc3af48b5d10b28a4.jpg)
no-repeat center/cover;
}
.p-info {
.title {
display: flex;
align-items: center;
padding: 0.05rem;
img {
width: 0.36rem;
height: 0.36rem;
border-radius: 50%;
margin-right: 0.08rem;
}
}
.column {
display: flex;
align-items: center;
justify-content: space-around;
span {//默認(rèn)統(tǒng)一樣式
font-size: 0.14rem;
color: #999;
}
.tprice {//個(gè)別加類區(qū)分
font-size: 0.15rem;
color: #fa5e6a;
}
}
}
}
&.row{//變體
width: 100%;
float: none;
.product-info {
display: flex;
}
.p-img {
width: 1.14rem;
height: 1.14rem;
padding-top: 0;
flex: none;
margin-right: .1rem;
}
}
}
}
另外,從性能方面來說
CSS 選擇器是從右到左進(jìn)行規(guī)則匹配,只要當(dāng)前選擇符的左邊還有其他選擇符,樣式系統(tǒng)就會(huì)繼續(xù)向左移動(dòng),直到找到和規(guī)則匹配的選擇符,或者因?yàn)椴黄ヅ涠顺?。我們把最右邊選擇符稱之為關(guān)鍵選擇器。如果都是像a、span之類的標(biāo)簽的話,瀏覽器必須遍歷頁面中所有的 a 標(biāo)簽,并向左匹配直至父級(jí),層級(jí)明確的情況下盡量用子代選擇器代替后代選擇器,子代只向上找一層父級(jí),而后代會(huì)一直找到根元素。
我一向廢話比較多,感謝看完的同學(xué)。
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國(guó)家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
北大課工場(chǎng)是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國(guó)家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國(guó)制造2025”,實(shí)現(xiàn)中華民族偉大復(fù)興的升級(jí)產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國(guó)職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫(kù),具有快速界面開發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問,美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。