发表于: 2019-11-15 21:50:00
1 1080
今日完成:
CSS的短板
作为前端学习者的我们 或多或少都要学些 CSS ,它作为前端开发的三大基石之一,时刻引领着 Web 的发展潮向。 而 CSS 作为一门标记性语言,可能 给初学者第一印象 就是简单易懂,毫无逻辑,不像编程该有的样子。在语法更新时,每当新属性提出,浏览器的兼容又会马上变成绊脚石,可以说 CSS 短板不容忽视。
问题的诞生往往伴随着技术的兴起, 在 Web 发展的这几年, 为了让 CSS 富有逻辑性,短板不那么严重,涌现出了 一些神奇的预处理语言。 它们让 CSS 彻底变成一门 可以使用 变量 、循环 、继承 、自定义方法等多种特性的标记语言,逻辑性得以大大增强。
预处理语言的诞生
其中 就我所知的有三门语言:Sass、Less 、Stylus 。
- Sass 诞生于 2007 年,Ruby 编写,其语法功能都十分全面,可以说 它完全把 CSS 变成了一门编程语言。另外 在国内外都很受欢迎,并且它的项目团队很是强大 ,是一款十分优秀的预处理语言。
- Stylus 诞生于 2010 年,来自 Node.js 社区,语法功能也和 Sass 不相伯仲,是一门十分独特的创新型语言。
- Less 诞生于 2009 年,受Sass的影响创建的一个开源项目。 它扩充了 CSS 语言,增加了诸如变量、混合(mixin)、函数等功能,让 CSS 更易维护、方便制作主题、扩充(引用于官网)。
使用 Less 的前奏
使用 Less 有两种方式
- 在页面中 引入 Less.js
- 可在官网下载
- 或使用CDN
<script src="//cdnjs.cloudflare.com/ajax/libs/less.js/2.7.2/less.min.js"></script>
需要注意的是,link 标签一定要在 Less.js 之前引入,并且 link 标签的 rel 属性要设置为stylesheet/less。<link rel="stylesheet/less" href="style.less"> <script src="less.min.js"></script>
在命令行 使用npm安装
npm install -g less
具体使用命令
$ lessc styles.less > styles.css
假如还有问题,官网已经有了明确的步骤。
如果你在本地环境,可以使用第一种方式,非常简单;但在生产环境中,性能非常重要,最好使用第二种方式。
变量
我们常常在 CSS 中 看到同一个值重复多次,这样难易于代码维护。
而 Less 中的变量十分强大,可化万物,值得一提的是,其变量是常量 ,所以只能定义一次,不能重复使用。
值变量
以 @
开头 定义变量,并且使用时 直接 键入 @
名称。
在平时工作中,我们就可以把 常用的变量 封装到一个文件中,这样利于代码组织维护。
下面使用less重写了任务四的登陆页面:
使用less重写任务四的登陆页面。
@header-color: #5fc0cd;
@header-height: 88px;
@header-margin-bottom: 2px;
@header-span-margin:30px;
@font-size-btn: 32px;
@log-in-btn: 36px;
@btn-bg: color(#ffffff);
@bg: color(#eff0f4);
@width-all: percentage(1.0);
@input-height: 100px;
@input-placeholder-color: #e1e5e7;
@input-padding-left: 150px;
@input-margin-top: 14px;
@forget-margin-right:31px;
@forget-margin-top: 19px;
@btn-margin-top: 69px;
@icon-margin:43px;
@my-icon-left:116px;
html, body {
padding: 0;
margin: 0;
background-color: @bg;
header {
display: flex;
align-content: center;
justify-content: space-between;
height: @header-height;
background-color: @header-color;
margin-bottom: @header-margin-bottom;
span {
color: @btn-bg;
font-size: @font-size-btn;
line-height: @header-height;
}
span.close {
margin-left: @header-span-margin;
}
span.register {
margin-right: @header-span-margin;
}
.log-in {
font-size: @log-in-btn;
}
}
div.input-outer {
font-size: @font-size-btn;
input::-webkit-input-placeholder {
font-size: @font-size-btn;
color: @input-placeholder-color;
}
input {
margin-top: @input-margin-top;
width: calc(@width-all - @input-padding-left);
height: @input-height;
border: 0;
padding-left: @input-padding-left;
}
.iphone {
background: url("../img/iphone1.jpg") no-repeat white 43px;
}
.pwd {
background: url("../img/locked-2.jpg") no-repeat white 43px;
}
.my-icon1 {
position: absolute;
top: 126px;
left: @my-icon-left;
width: 2px;
height: 51px;
background: #eaedee;
}
.my-icon2 {
position: absolute;
top: 243px;;
left: @my-icon-left;
width: 2px;
height: 51px;
background: #eaedee;
}
}
button {
margin-top:@btn-margin-top;
height: @input-height;
width: @width-all;
background-color: @header-color;
color: @btn-bg;
border: 0;
font-size: @log-in-btn;
}
span.forget {
float: right;
margin-right:@forget-margin-right ;
margin-top: @forget-margin-top;
font-size: @font-size-btn;
color: @header-color;
}
}
遇到的问题:
对Less的使用还只是一些值变量、嵌套
还需要反复检查是否有遗漏可以提炼使用预处理器语言特性的地方
收获:
学习了less的使用
明日计划:
评论