把握这个个性-粗浅解析原生CSS嵌套-优化代码可读性和可爱护性 (把握这个个性英文)
假设你是一个前端开发人员,那么你应该经常使用过预处置器以及预处置器中的嵌套个性。它不时是一个受欢迎的配置,我不时都在经常使用CSS预处置器。
往年一切的干流阅读器都允许原生CSS嵌套:Chrome、Firefox和Safari。这是一个关键的CSS配置,这将使编写CSS愈加容易。在本文中我将记载到目前为止我所学到的关于CSS嵌套的常识,并与您分享我的发现,包括经常使用案例和示例。
引见
CSS嵌套是许多开发人员等候已久的配置之一。咱们曾经依赖于CSS预处置器,如Sass或Less。让咱们来回忆一下以前的做法:
请看上方的例子。咱们有一个图标嵌套在选用器.nav__item中。
.nav__item{.icon{display:flex;padding:1rem;}}
以上是一个Sass语法的代码。编译后,它在阅读器中看起来像上方这样:
.nav__item.icon{display:flex;padding:1rem;}
经常使用原生CSS嵌套,相反的CSS将按原样上班。这里有一个图,显示了原生CSS嵌套和阅读器DevTools之间的比拟。
图片
请留意阅读器显示CSS的形式与CSS代码中的显示形式简直分歧。
假设这个CSS是用Sass编译的,阅读器会显示如下:
CSS嵌套的好处
在我看来,嵌套CSS有一些很正当的理由,使其变得有用:
CSS嵌套规定
为了让你了解CSS嵌套,我将尝试提供不同CSS疑问的案例,以及嵌套如何协助处置这些疑问。
首先你须要学习&符号,有少数状况下,这个符号是必要的。
嵌套没有类或ID的元素
在这个例子中,<a>元素是经过.nav__item设置样式。要使CSS有效,经常使用&符号是可选的。
nav__item{&a{display:block;padding:1.5rem1rem;}}/*同等于*/.nav__itema{}
您也可以选用不经常使用&符号:
.nav__item{a{display:block;padding:1.5rem1rem;}}/*同等于*/.nav__itema{}
请留意这是一个最近的降级,被称为宽松的CSS嵌套。它适用于最新的ChromeCanary和Safari技术预览版。
经常使用类嵌套元素
以前面的例子为例,但假定<a>元素有一个HTML类。
.nav__item{.link{display:block;padding:1.5rem1rem;}}/*同等于*/.nav__item.link{}
这里不须要经常使用&,只要类称号也反常失效。
嵌套CSS组合器
CSS原生嵌套的一个好处是可以经常使用组合器。让咱们来看一些例子。
在上方的例子中,我想选用.nav__item的每个元素,它前面有另一个具备相反类的元素。因此我经常使用了相邻兄弟选用器。
在原生CSS嵌套中,咱们可以经常使用&符号来模拟这种成果。请留意我重复经常使用了它两次。
.nav__item{&+&{border-left:2pxsolid;}}
魔术出当初第二次重复的&。在这里阅读器将了解我想经常使用相邻的兄弟选用器。让我给你看一个图表来说明这一点:
另一个例子是嵌套子组合器。它可以选用元素的间接子元素。
.nav__item{>a{padding:1rem;}}
嵌套示例:Active,Focus,Hover
:active、:focus和:hover是经过用户操作激活的CSS伪类。
经常使用CSS嵌套,可以一次性嵌套它们以防止代码重复。让咱们以:hover为例:
button{&:hover{background-color:var(--bg-color);}&:focus{outline:solid2px;}}
经常使用预处置器启动嵌套时的区别在于阅读器将像这样渲染它:
button:hover{background-color:var(--bg-color);}button:focus{outline:solid2px;}
让咱们来看看原生CSS嵌套在Chrome、Safari和Firefox中是如何出现的。
嵌套示例:PostContent
第一个尝试CSS嵌套的例子之一是对帖子的注释内容设置样式。构想一下,一篇文章有注释题目、文本、图像、援用等等。
题目
咱们偏差于像上方这样设计题目:
.post-contenth1,.post-contenth2,.post-contenth3,.post-contenth4{/*styleshere*/}
经常使用CSS嵌套,它更便捷:
.post-content{h1,h2,h3,h4{color:var(--heading-color);font-weight:var(--heading-font-bold);margin-bottom:var(--size-2);}}
咱们也可以经常使用:is()选用器来做雷同的事件。
.post-content{:is(h1,h2,h3,h4){color:var(--heading-color);font-weight:var(--heading-font-bold);margin-bottom:var(--size-2);}}
段落元素
一个经常出现的状况是设置段落外部的链接样式。在这种状况下,CSS的嵌套配置十分好用。
.post-content{&p{color:var(--color-black);&a{font-weight:bold;text-decoration:underline;}}}
链接或许也须要悬停或焦点成果。
.post-content{&p{color:var(--color-black);&a{font-weight:bold;text-decoration:underline;&:hover{/*hoverstyles*/}}}}
咱们还可以用在嵌套媒体查问。
.post-content{&p{/*basestyles*/@media(min-width:400px){/*dosomething*/}}}
帖子图片
帖子图蕴含一个图像和一个可选的<figcaption>来显示图像的形容。
在我的示例中,假设<figure>有题目,我须要对它启动不同的样式设置。可以经过嵌套CSS:has()成功。
.post-content{&figure{&img{/*thefigure'simagestyles*/}/*changestothe<figure>contner,ifithasafigcaptionelement*/&:has(figcaption){display:flex;align-items:start;}&figcaption{/*captionstyling*/}}}
文章列表
我须要为一切列表项增加边框,除了最后一个。为此,我经常使用了:not()选用器。
.post-content{li{&:not(:last-child){border-bottom:1pxsolid;}}}
要经常使用:not(),咱们须要在它前面附加一个&符号。
自定义题目间距
假设<h3>和<h4>之后是代码片段,我须要缩小它们下方的间距。
.post-content{&h3+[class*="language-"],&h4+[class*="language-"]{margin-top:0.5rem;}}
嵌套示例:卡片组件
我将展示一个便捷的卡片组件,它经常使用CSS嵌套来成功所需的样式。
假定有一个自动或基本样式的.card元素,我将继续展示CSS嵌套的经常使用。
.card{/*defaultcardstyles*/}
假设容器宽度大于400px,我宿愿卡片成为一个Flex容器。
.card{/*defaultcardstyles*//*ifthecontainerwidthis400pxorbigger*/@containercard(min-width:400px){display:flex;}}
嵌套示例:表单输入
一种经常出现的状况是对输入的占位符启动样式设置。疑问是每个阅读器都有自己的前缀。
由于前缀样式须要一个双冒号,咱们须要经常使用与号&,否则样式将终止。
input{--placeholder-color:#969696;/*otherstyles*/&::-webkit-input-placeholder{color:var(--placeholder-color);}&::-moz-placeholder{color:var(--placeholder-color);opacity:1;}&:-moz-placeholder{color:var(--placeholder-color);}}
我在探求CSS嵌套时发现的失误
经常使用不带&号的通用选用器
假定咱们有一张卡片,咱们想选用其中的一切元素。经常使用CSS原生嵌套,这应该可以上班:
.card{*{/*styleshere*/}}
我发现这在Chrome稳固版中不起作用,但在ChromeCanary121、Safari17.1和Firefox119中上班反常。
.card{&*{/*styleshere*/}}
经常使用不带&号的自定义属性
在这个疑问中,选用一个不带&号的自定义属性将不会出现预期的结果。
.card{[data-type="featured"]{/*styleshere*/}}
我发现这在Chrome稳固版中不起作用,但在ChromeCanary121、Safari17.1和Firefox119中上班反常。
为了处置这个疑问,咱们须要附加一个&符号:
.card{&[data-type="featured"]{/*styleshere*/}}
这两个bug都在ChromeCanary中的宽松CSS嵌套版本中获取了修复。
检测CSS嵌套允许
可以经常使用@supports来审核CSS嵌套允许。在咱们的例子中,咱们想审核阅读器能否识别&可以经常使用以下代码。
@supportsselector(&){.post-content{&h2{/*styleshere.*/}}}
对我来说,如今还在经常使用PostCSS嵌套插件,它将原生CSS嵌套编译为个别CSS。一旦它可以安保经常使用后,就可以不再经常使用插件了。
论断
CSS嵌套是一个关键的配置,它将增强咱们编写CSS的才干。目前经常使用嵌套是可行的,但须要留意受众状况,由于目前对允许水平依然较新。
web前端开发和网页制作有什么区别?详细点
自从接触网站开发以来到现在已经有六个年头了,今天偶然整理电脑资料看到当时为参加系里面一个比赛而做的第一个网站时,勾起了在这网站开发道路上的一串串回忆,成功与喜悦、烦恼与纠结都历历在目,感慨颇多。在此与大家分享,希望对初学Web前端的各位童鞋来说有所帮助。欢迎各位吐槽、拍砖。
先从大家学习上的一个误区开始谈起。
前端开发是一个近几年兴起的新兴行业,所以远没有电子商务那样成熟的课程体系,大学内也没有完整的前端课程体系,所以学习前端在国内无非就是培训,以及自学。
培训是针对那些有条件的人来说,很多小伙伴更喜欢的是自学。但是一个人自学毕竟力量是有限的,为了让想学习的人可以更好的学习,给大家推荐一个裙,前面是6 5 7,中间是一 3 七,最后面就是九 零 六,这里有很多想学习的人和你一起交流,也有大牛每天晚上免费教学,想要学习的人都可以加入我们,但是我们只欢迎想学习的人,不是来学习,随便看看的就不要进了。
Web前端的学习误区
网页制作是计算机专业同学在大学期间都会接触到的一门课程,而学习网页制作所用的第一个集成开发环境(IDE)想必大多是Dreamweaver,这种所见即所得的“吊炸天”IDE为我们制作网页带来了极大的方便。
入门快、见效快让我们在不知不觉中已经深深爱上了网页制作。此时,很多人会陷入一个误区,那就是既然借助这么帅的IDE,通过鼠标点击菜单就可以快速方便地制作网页。
那么我们为什么还要去学习HTML、CSS、JavaScrpt、jQuery等这些苦逼的代码呢?这不是舍简求繁吗?
但是随着学习的深入,就会发现我们步入了一种窘境——过分的依赖IDE导致我们不清楚其实现的本质,知其然但不知其所以然。
因此在页面效果出现问题时,我们便手足无措,更不用提如何进行页面优化以及完成一些更高级的应用了。其原因是显而易见的——聪明的IDE成全了我们的惰性,使我们忽略了华丽的网页背后最本质的内容——code。
正确的方向胜过无谓的努力
有两只蚂蚁想翻越一段墙,寻找墙那头的食物。一只蚂蚁来到墙脚就毫不犹豫地向上爬去,可是每当它爬到大半时,就会由于劳累、疲倦而跌落下来。虽然它不气馁,一次次跌下来,又迅速地调整一下自己,重新开始向上爬去。
另一只蚂蚁观察了一下,决定绕过墙去。很快,这只蚂蚁绕过墙来到食物前,开始享受起来;而另一只蚂蚁还在不停地跌落下去又重新开始。
很多时候,成功除了勇气、坚持不懈外,更需要方向。也许有了一个好的方向,成功来得比想象的更快。如果在错误的路上奔跑,再怎么努力也是白搭。学习Web前端也是如此,首先应该选择一个正确的学习路线。
Web前端的学习路线结合我的学习经历、近年来辅导学生的经验以及公司中实际项目的需求,在这里将Web前端的学习分为以下几个阶段
第一阶段——HTML的学习。
超文本标记语言(HyperText Mark-up Language 简称HTML)是一个网页的骨架,无论是静态网页还是动态网页,最终返回到浏览器端的都是HTML代码,浏览器将HTML代码解释渲染后呈现给用户。因此,我们必须掌握HTML的基本结构和常用标记及属性。
HTML的学习是一个记忆和理解的过程,在学习过程中可以借助Dreamweaver的“拆分”视图辅助学习。在“设计”视图中看效果,在“代码”视图中学本质,将各种视图的优势发挥到极致,这种对照学习的方法弥补了单纯识记HTML标签和属性的枯燥乏味,想必对各位初学的小盆友们来说必定是极好的!
在学习了HTML之后,我们只是掌握了各种“原材料”的制作方法,要想盖一幢楼房就还需要把这些“原材料”按照我们设计的方案组合布局在一起并进行一些样式的美化。
于是进入第二个阶段——CSS的学习。
CSS是英文Cascading Style Sheets的缩写,叫做层叠样式表,是能够真正做到网页表现与内容分离的一种样式设计语言。相对于传统HTML的表现而言其样式是可以复用的,这样就极大地提高了我们开发的速度,降低了维护的成本。
同时CSS中的盒子模型、相对布局、绝对布局等能够实现对网页中各对象的位置排版进行像素级的精确控制。通过此阶段的学习,我们就可以顺利完成“一幢楼房”的建设。
“楼房”建设完成之后,我们可以交给用户使用,但是如果想让用户获得更佳的体验,我们还可以对“楼房”进行更深一步的“装修”,让它看起来更“豪华”一些。
为了完成这个任务,我们进入第三个阶段——JavaScript的学习。
JavaScript是一种在客户端广泛使用的脚步语言,在JavaScript当中为我们提供了一些内置函数、对象和DOM操作,借助这些内容我们可以来实现一些客户端的特效、验证、交互等,使我们的页面看起来不那么呆板,屌丝瞬间逆袭高富帅!有么有?
此时,也许你还沉浸在JavaScript给你带来的惊喜之中,但你的项目经理却突然对你大吼道:
“这个效果在××浏览器下不兼容,重新搞……”
“不兼容?”瞬间石化了有木有?
“我擦,坑爹啊!那可是花了我一个晚上写了几百行代码搞定的啊,吐血了都!”
JavaScript的兼容性和复杂性有时候的确让我们头疼,还好有“大神”帮我们做了封装。
接下来我们进入第四个阶段——jQUery的学习。
jQuery是一个免费、开源的轻量级的JavaScript库,并且兼容各种浏览器(jQuery2.0及后续版本放弃了对IE6/7/8浏览器的支持),同时现在有很多基于jQuery的插件可供选择,这样在我们实现一些丰富的动态效果时更方便快捷,大大节省了我们开发的时间,提高了开发速度,这也充分体现了其write less,do more的核心宗旨。这个Feel倍儿爽!有么有?
“豪华大楼”至此拔地而起,但是每天这样日复一日,年复一年的盖楼,好繁琐!能不能将大楼里面每一个单独部件模块化,当需要盖楼时就像堆积木一样组合在一起,这样岂不是爽歪歪?可以实现吗?答案是肯定的。
这种思想在Web前端开发中也是适合的,于是乎就出现了各种前端框架,在这里推荐给大家的是Bootstrap。 Bootstrap是Twitter推出的一个开源的用于前端开发的工具包,是一个CSS/HTML框架,并且支持响应式布局。一经推出后颇受欢迎,一直是GitHub上的热门开源项目。
在项目开发过程中,我们可以借助Bootstrap提供的CSS样式、组件、JavaScript插件等快速的完成页面布局和样式设置,然后再有针对性的微调样式,这样基于框架进行开发大大缩短了开发周期。站在巨人的肩膀上就是爽!
Web前端的学习建议
最后给大家聊聊在学习Web前端中的一些建议和方法。
在CSS布局时需要注意的一个问题是很多同学缺乏对页面布局进行整体分析,不能够从宏观上对页面中盒子间的嵌套关系进行把握,就急于动手去做,导致页面中各元素间的关系很混乱,容易出现盒子在浮动时错位等情况。建议大家在布局时采用“自顶向下,逐步细化”的思想,先用几个盒子将页面从整体上划分,然后逐步在盒子中继续嵌套盒子。
“君子生非异也,善假于物也”,在学习的过程中还要多浏览一些优秀的网站,善于分析借鉴其设计思路和布局方法,见多方能识广,进而才可以融会贯通,取他人之长为我所用。
同时还要善于使用Firebug这个利器。Firebug一方面可以在我们学习过程中帮助我们调试自己的页面,另一方面我们可以使用Firebug方便地查看、分析别人网站的源代码,“偷”也是一种技能!
随着移动互联网热潮的到来,移动开发越来越受到大家的追捧,响应式布局、微网站等需求量不断增加,也是我们Web前端未来的发展方向之一,学有余力的同学可以多多关注。最后祝愿大家能在Web前端开发道路上走出一片更宽更广的天地!
高级SPA(打造高性能、高可维护、高交互体验的单页应用)
高级SPA(SinglePageApplication)是指一种基于Web的应用程序,它通过AJAX和HTML5来实现无需刷新页面即可实现数据交互和页面更新的功能。高级SPA具有高性能、高可维护、高交互体验等特点,因此被广泛应用于各种Web应用程序中。
如何打造高级SPA?
下面将介绍一些打造高级SPA的关键步骤。
1.选择合适的框架
选择合适的框架是打造高级SPA的第一步。目前市面上有很多优秀的前端框架,如Angular、React、Vue等。这些框架都具有一定的优势和不足,需要根据具体项目的需求来选择合适的框架。比如,如果需要构建大型应用程序,可以考虑使用Angular;如果需要构建高度可定制的应用程序,可以考虑使用React;如果需要构建轻量级应用程序,可以考虑使用Vue。
2.优化页面性能
优化页面性能是打造高级SPA的关键步骤之一。页面性能包括页面加载速度、页面渲染速度、页面响应速度等方面。为了优化页面性能,可以采取以下措施:
-减少HTTP请求次数:合并CSS和JS文件、使用图片精灵等。
-压缩文件大小:使用Gzip压缩、压缩图片等。
-使用CDN加速:将静态资源放到CDN上,减少服务器负载。
-使用缓存:使用浏览器缓存、使用服务端缓存等。
3.提高代码可维护性
提高代码可维护性是打造高级SPA的另一个关键步骤。可维护性包括代码可读性、代码可扩展性、代码可重用性等方面。为了提高代码可维护性,可以采取以下措施:
-使用模块化:将代码划分为独立的模块,提高代码复用性。
-使用设计模式:使用常见的设计模式,如MVC、MVVM等,提高代码可扩展性。
-使用代码规范:使用统一的代码规范,提高代码可读性。
4.提高交互体验
提高交互体验是打造高级SPA的最终目标。交互体验包括页面交互、动画效果、用户操作等方面。为了提高交互体验,可以采取以下措施:
-使用响应式设计:使页面能够适应不同的设备和屏幕大小。
-使用动画效果:使用CSS3动画、JavaScript动画等,提高页面的视觉效果。
-使用AJAX技术:使用AJAX技术实现无需刷新页面的数据交互。
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。