iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > VUE >css中预处理器、后处理器以及选择器的示例分析
  • 474
分享到

css中预处理器、后处理器以及选择器的示例分析

2024-04-02 19:04:59 474人浏览 独家记忆
摘要

这篇文章将为大家详细讲解有关CSS中预处理器、后处理器以及选择器的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。css预处理器css预处理器:用一种专门的编程语言

这篇文章将为大家详细讲解有关CSS中预处理器、后处理器以及选择器的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

css中预处理器、后处理器以及选择器的示例分析

css预处理器

css预处理器:用一种专门的编程语言,为CSS增加了一些编程的特性,将CSS作为目标生成文件,然后开发者就只要使用这种语言进行编码工作。

css存在的问题:

  • 语法不够强大,比如无法嵌套书写导致模块化开发中需要书写很多重复的选择器;

  • 没有变量和合理的样式复用机制,使得逻辑上相关的属性值必须以字面量的形式重复输出,导致难以维护。

  • 所以需要预处理器提供 CSS 缺失的样式层复用机制、减少冗余代码,提高样式代码的可维护性。

目前比较主流的三个处理器分别是 Less、Sass、Stylus

Sass、LESS和Stylus的对比

安装
1.sass的安装

首先安装ruby,建议安装到C盘中,安装过程中选择“Add Ruby executables to your PATH”

ruby安装成功后,启动Ruby的Command控制面板,输入命令

  gem install sass

回车后会自动安装好Sass

2.Less的安装

分为两种:客户端和服务器端安装。

a.客户端

只需要在官网载一个javascript脚本文件主“less.js”,然后在我们需要引入LESS源文件的html的中加入如下代码:

<link rel="stylesheet/less" type="text/css" href="文件路径/styles.less">
<script src="文件路径/less.js" type="text/javascript"></script>

b.服务器

利用node的包管理器(npm)安装LESS,安装成功后就可以在Node环境中对LESS文件进行编译。

首先安装node,安装成功后,启动node的Command控制面板,输入命令

  $ npm install less

回车后会自动安装好less

3.Stylus的安装

Stylus的安装和LESS在服务器端的安装很相似,先安装Node 。在Node的Command控制面板输入命令:

 $ npm install stylus

回车后会自动安装好stylus

Sass、LESS和Stylus转换成css文件

1.sass

先在项目中创建一个Sass文件,此例中将其命名为“style.scss”,并且将其放在对应的项目样式中

启动Ruby的Command控制面板,找到需要转译的Sass文件

在对应的目录下输入下面的命令:

sass style.scss style.css
sass --watch style.scss:style.css

就会生成自动“style.css”文件,并自动更新对应的CSS样式文件

2.Less(了解)

在安装的Node JS环境下通过其自己的命令来进行转译。

 $ lessc style.less

上面的命令会将编译的CSS传递给stdout,你可以将它保存到一个文件中:

$ lessc style.less > style.css

3.Stylus(了解)

Stylus具有可执行性,因此Stylus能将自身转换成CSS。Stylus可以读取自“stdin”输出到“stdout”,因此Stylus可以像下面转译源文件:

$ stylus –compress  <some.styl> some.css

Stylus也像Sass一样,同时接受单个文件和整个目录的转译。例如,一个目录名为“css”将在同一个目录编译并输出“.css”文件。

$ stylus css

下面的命令将输出到“./public/stylesheets”:

 $ stylus css –out public/stylesheets

还可以同时转译多个文件:

$ stylus one.styl two.styl

如果你的浏览器安装了Firebug,那么可以使用FireStylus扩展。

$ stylus –firebug <path>

变量的处理

Less:变量处理方式–懒加载,所有 Less 变量的计算,都是以这个变量最后一次被定义的值为准。

Less

@size: 10px;.box { width: @size; } @size: 20px; 
.ball { width: @size; }

输出:

.box { width: 20px; } .ball { width: 20px; }

Stylus

size = 10px
.box
  width: sizesize = 20px
.ball
  width: size

输出:

.box {  width: 10px;}.ball {  width: 20px;}

Sass的变量处理方式和Stylus相同,变量值输出时根据之前最近的一次定义计算。这其实代表了两种理念:Less 更倾向接近 CSS 的声明式,计算过程弱化调用时机;而 Sass 和 Stylus 更倾向于指令式。

如果在Less中引入第三方样式库,可以通过重新配置变量来改变样式

优点:stylus和sass这样的处理会不容易受多个第三方库变量名冲突的影响,因为一个变量不能影响在定义它以前的输出样式

css后处理器

参考链接

css后处理器是对css进行处理,并最终生成css预处理器,它属于广义上的css预处理器

举例:css压缩工具(clean-css),Autoprefixer(以Can I Use上的浏览器支持数据为基础,自动处理兼容问题)

Autoprefixer:

标准css:

.container {display: flex;}.item {flex: 1;}

兼容处理后

.container {
display: -WEBkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
}
.item {
-webkit-box-flex: 1;
-webkit-flex: 1;
-ms-flex: 1;
flex: 1;
}

优点:使用Css语法,容易进行模块化,贴近Css的未来标准

缺点:逻辑处理能力有限

框架举例

PostCss:是一个基于JS插件的转换样式的工具。PostCSS插件可以像预处理器,它们可以优化和Autoprefix代码;可以添加未来语法;可以添加变量和逻辑;可以提供完整的网格系统;可以提供编码的快捷方式等等

优点:

  • 多样化的功能插件,创建了一个生态的插件系统

  • 根据你需要的特性进行模块化

  • 快速编译

  • 创建自己的插件,且具可访问性

  • 可以像普通的CSS一样使用它

  • 不依赖于任何预处理器就具备创建一个库的能力

  • 可以与许多流行工具构建无缝部署

font-family

font-family用来规定元素的字体系列。

font-family 可以把多个字体名称作为一个“回退”系统来保存。如果浏览器不支持第一个字体,则会尝试下一个。也就是说,font-family 属性的值是用于某个元素的字体族名称或/及类族名称的一个优先表。浏览器会使用它可识别的第一个值。

font-family 定义的原则:

  • 通常会先进行英文字体的声明,选择最优的英文字体,这样不会影响到中文字体的选择,中文字体声明则紧随其次。

  • 兼顾多操作系统,不同系统下的字体表示:

css中预处理器、后处理器以及选择器的示例分析
css中预处理器、后处理器以及选择器的示例分析
css中预处理器、后处理器以及选择器的示例分析

  • 当使用一些非常新的字体时,要考虑向下兼容,兼顾到一些极旧的操作系统,可以使用字体族系列 serif 和sans-serif 结尾。为低级系统提供fallback方案

css选择器

参考链接

选择器

分类:基础选择器、组合选择器、属性选择器、伪类选择器和伪元素等

基础选择器:

id选择器(#footer),匹配所有id属性等于footer的元素。
类选择器(.info),匹配所有class属性中包含info的元素。
通用选择器(*),匹配任何元素。
标签选择器(E),匹配所有使用E标签的元素。
同级元素选择器(E~F ),匹配任何在E元素之后的同级F元素(css3)。

属性选择器:(E表示元素,attr表示属性,val表示属性的值。)

 E[attr]选择器,匹配所有具有attr属性的E元素,不考虑它的值。
 E[attr=val]匹配所有attr属性值为val的E元素。
 E[attr~=val]匹配具有attr属性且属性值用空格分隔的字符列表。
 E[attr|=val]匹配具有attr属性且属性值为用连接符(-)分隔的字符串,并以val开头的E元素。
 E[attr^="val"],属性attr的值以"val"开头的元素(CSS3)。
 E[attr$=“val”],属性attr的值以"val"结尾的元素(CSS3)。
 E[attr*="val"],属性attr的值包含"val"字符串的元素(CSS3)。

组合选择器

  多元素选择器(E, F),同时匹配多有E元素或F元素。
  后代选择器(E F),匹配所有属于E元素后代的F元素,E和F之间用空格分隔。
  子元素选择器(E > F), 匹配所有E元素的子元素F。
  相邻选择器(E + F),匹配所有紧随E元素之后的同级元素F。

伪类选择器:

   E:link, 匹配所有未被点击的链接.
   E:visited, 匹配所有已被点击的链接。
   E:active, 匹配鼠标已经将其按下,还没释放的E元素。
   E:hover, 匹配鼠标悬停其上的E元素。
   E:focus, 匹配获得当前焦点的E元素。

结构性伪类:E:nth-child(n), 匹配其父元素的第n个子元素,第一个编号为1。

!important属性

1、用于解决IE对某些CSS规范有偏差的情况.
比如在IE中的效果总是和其他的浏览器如firefox,opera等相差2px,导致页面布局有错位, 这是因为IE对盒之间距离的解释的bug造成的,针对这种情况我们就可以利用!important来帮助解决。

.myclass{ margin-left:20px!important; margin-left:40px;}

只有当同时出现两个同名的样式时,才可以这样用,此时IE浏览器是识别的
2、如果有定义了一个样式A,比如font-size,你不打算让以后也叫样式A的覆盖掉这个font-size,也可以用 !important . 而如果新样式也用了!important 则还是会强制覆盖掉

.A{ font-size:12px !important;}.A{ font-size:14px;   //不会生效
}.A{ font-size:14px !important; //生效
}

优先级

!important >id选择器>class、属性、伪类选择器>标签选择器

权值越大优先级越高,权值相同,后定义的优先级较高,

浏览器查找元素是从右到左查找的,好处是为了快速过滤掉一些无关紧要的样式规则和元素

例如:p#pBox p span.red{color:red;},浏览器的查找顺序如下:先查找html中所有class=’red’的span元素,找到后,再查找其父辈元素中是否有p元素,再判断p的父元素中是否有id为pBox的p元素,如果都存在则匹配上。

属性继承

CSS属性继承:外层元素的样式,会被内层元素进行继承。多个外层元素的样式,最终都会“叠加”到内层元素上。

不可继承的:display、margin、border、padding、background、height、min-height、max-height、width、min-width、max-width、overflow、position、left、right、top、bottom、z-index、float、clear、table-layout、vertical-align、page-break-after、page-bread-before和unicode-bidi。

CSS文本属性都会被继承的:
color、 font-size、font-family、font-style、 font-weight
text-align、text-decoration、text-indent、letter-spacing、line-height
提示:<body>中的CSS属性,会被所有的子元素继承。

优先级就近原则,同权重的情况下样式定义最近者为标准,载入样式以最后载入的定位为准

ID选择器和Class选择器的区别

ID选择器:每个元素只能有一个ID,每个页面只能有一个元素使用该ID

class选择器:多个元素可以共用相同类,一个元素可以有多个类

雪碧图原理

原理:把小图标合成一张大图,通过给元素的公共css设置background-image为该合成图,这样每个元素都会以该合成图为背景,而且页面也只加载一张合成图,然后再给每个元素单独微调其background-position。把多个请求合并成一个。

background-position

设置背景图像的起始位置。

background-position属性设置背景原图像(由 background-image 定义)的位置,意味着使用这个属性的前提是必须设置背景原图像background-image。

background-position的属性值:

  • 方向值:x轴方向:left | right | center; y轴方向:top| bottom | center

  • 使用百分比来设置属性值,以自身容器的长宽 减去 图片的长宽 乘以 百分比 所得的数值来确定图片的起始位置。

  • 数值: X轴方向:x px ; Y轴方向:x px

关于“css中预处理器、后处理器以及选择器的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: css中预处理器、后处理器以及选择器的示例分析

本文链接: https://www.lsjlt.com/news/88098.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • css中预处理器、后处理器以及选择器的示例分析
    这篇文章将为大家详细讲解有关css中预处理器、后处理器以及选择器的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。css预处理器css预处理器:用一种专门的编程语言...
    99+
    2024-04-02
  • CSS预处理器Sass的示例分析
    这篇文章主要介绍CSS预处理器Sass的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Sass 是一款强化 CSS 的辅助工具,它在 CSS 语法的基础上增加了变量 (variables)、嵌套 (neste...
    99+
    2023-06-08
  • 前端构建CSS预处理器的示例分析
    这篇文章主要介绍前端构建CSS预处理器的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Less 是一门 CSS 预处理语言,它扩充了 CSS 语言,增加了诸如变量、混合(mi...
    99+
    2024-04-02
  • css后代选择器的示例分析
    这篇文章主要介绍css后代选择器的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!说明后代选择器又称为包含选择器,可以选择作为某元素后代的元素。从h2开始里面包含的所有的em元素变成红色,h2为祖先,其他的em...
    99+
    2023-06-20
  • CSS中预处理语言的示例分析
    小编给大家分享一下CSS中预处理语言的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Less 是一门 CSS 预处理语言...
    99+
    2024-04-02
  • css选择器的示例分析
    这篇文章主要介绍了css选择器的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。语法结构Id选择器格式#id :#+元素的i...
    99+
    2024-04-02
  • css中body选择器的示例分析
    这篇文章主要为大家展示了“css中body选择器的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“css中body选择器的示例分析”这篇文章吧。body&...
    99+
    2024-04-02
  • C语言中预处理的示例分析
    小编给大家分享一下C语言中预处理的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!#define定义宏带副作用的宏参数我们来看如下一段代码结果分别为12,1...
    99+
    2023-06-25
  • CSS派生选择器的示例分析
    小编给大家分享一下CSS派生选择器的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! 通过依据元素在其位置的上下文关系来定义样式,你可以使标记更加简洁。 在 CSS1 中,通过这...
    99+
    2024-04-02
  • CSS选择器权重的示例分析
    这篇文章给大家分享的是有关CSS选择器权重的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。代码如下:<style type="text/css"> div.ui_infor...
    99+
    2023-06-08
  • CSS属性选择器的示例分析
    这篇文章主要介绍CSS属性选择器的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具有特定属性的HTML元素样式具有特定属性的HTML元素样式不仅仅是class和id。注意:I...
    99+
    2024-04-02
  • 如何理解CSS中的类型选择器和ID选择器以及class选择器
    这期内容当中小编将会给大家带来有关如何理解CSS中的类型选择器和ID选择器以及类选择器,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。类型选择器类型选择器,是以html元素...
    99+
    2024-04-02
  • MT6177芯片资料及处理器的示例分析
    这篇文章主要为大家分析了MT6177芯片资料及处理器的示例分析的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“MT6177芯片资料及处理器的示例分析”的知识吧...
    99+
    2023-06-05
  • JavaScript中选择器的示例分析
    这篇文章给大家分享的是有关JavaScript中选择器的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。undefined在html5之前只有下面四种选择器.getElem...
    99+
    2024-04-02
  • css中属性和值选择器的示例分析
    这篇文章将为大家详细讲解有关css中属性和值选择器的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 属性和值选择器 下面的例子为 title="W3...
    99+
    2024-04-02
  • 如何理解CSS中选择器的逻辑处理
    这篇文章给大家介绍如何理解CSS中选择器的逻辑处理,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。在过去的很长一段时间中,我们都说 CSS 是不带有任何逻辑的,意思是在 CSS 中没有控...
    99+
    2024-04-02
  • Java注解处理器的示例分析
    这篇文章将为大家详细讲解有关Java注解处理器的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。如果没有用来读取注解的方法和工作,那么注解也就不会比注释更有用处了。使用注解的过程中,很重要的一部分就...
    99+
    2023-05-30
  • CSS中id选择器不被用来创建派生选择器的示例分析
    这篇文章主要介绍了CSS中id选择器不被用来创建派生选择器的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 id 决议器即便不被用...
    99+
    2024-04-02
  • C语言之预处理命令的示例分析
    这篇文章主要介绍C语言之预处理命令的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!c提供的预处理功能有:宏定义文件包含条件编译为了与其她c语句区分,命令经常以符号“#”开头。宏定义#define 标识符 字符...
    99+
    2023-06-14
  • jQuery选择器之属性过滤选择器的示例分析
    小编给大家分享一下jQuery选择器之属性过滤选择器的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体内容如下<...
    99+
    2024-04-02
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作