整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

前端每日实战:苦练 CSS 基本功-图解辅助线的原理和画法


用 CSS 进行绘图和布局时,除了借助浏览器开发工具之外,还经常需要绘制一些辅助线,以便定位参考。今天就以第 170 号作品中使用的网格线为例,详细讲解一下辅助线的原理和画法。

为了使辅助线明显可见,把线的颜色设置为和背景对比强烈的白色,并且线也粗一些,在实际使用时,你应该降低辅助线与背景的对比并且使用细线。

分步图解

1、定义容器

div {
    font-size: 50px;
    width: 6em;
    height: 4em;
    background-color: teal;
}

假设你有一个 <div> 容器,容器里是否有元素都可以,当前演示为了突显辅助线,暂时让容器里空空如也:

2、一条基本的横线

div {
    background-image: linear-gradient(to bottom, transparent 95%, white 95%);
}

网格线是一条一条线条组成的,所以要先画出一条线,它的95%都是透明的,只有5%是白色的:

3、一条有尺寸的横线

div {
    background-size: 1em 1em;
    background-repeat: no-repeat;
}

我自己是一名从事了多年开发的web前端老程序员,目前辞职在做自己的web前端私人定制课程,今年年初我花了一个月整理了一份最适合2019年学习的web前端学习干货,各种框架都有整理,送给每一位前端小伙伴,想要获取的可以关注我的头条号并在后台私信我:前端,即可免费获取。

请把绘制网格线想象成是铺地砖,首先要定义地砖的尺寸,这里用 1em 1em 定义了一块方砖,同时让砖块不重复,所以只显示出了孤单的一块砖:

4、横向平铺地砖

div {
    background-repeat: repeat-x;
}

如果把地砖横向平铺,就能组合成一条水平线:

5、纵向平铺地砖

div {
    background-repeat: repeat-y;
}

如果把地砖纵向平铺,就能组合成一条垂直线。
错!
纵向平铺是像阶梯一样的效果:

6、横向和纵向同时平铺地砖

div {
    background-repeat: repeat;
}

横向和纵向同时平铺,就是像作业本一样的多条横线效果。注意,这时最顶端是没有线的:

7、竖线平铺效果

div {
    background-image: linear-gradient(to right, transparent 95%, white 95%);
    background-size: 1em 1em;
    background-repeat: repeat;
}

假如把地砖换成向右的竖线,即只把 to bottom 改为 to right ,其他不变,绘制出的就是一排一排的竖线。同样注意,这时最左边是没有线的:

8、不完美的网格线

div {
    background-image:
        linear-gradient(to bottom, transparent 95%, white 95%),
        linear-gradient(to right, transparent 95%, white 95%);
    background-size: 1em 1em;
    background-repeat: repeat;
}

把第6步和第7步合并起来,网格线基本成型了,不过顶端和左端还缺少线条:

9、一段顶端线

div {
    background-image: 
        linear-gradient(to top, transparent 95%, white 95%);
    background-size: 1em 1em;
    background-repeat: no-repeat;
}

来解决顶端线的问题,先画出一段顶端线。这段代码和第3步极相似,仅仅是 to bottom 改成了 to top:

10、一条顶端线

div {
    background-repeat: repeat-x;
}

把这一段顶端线水平平铺,就是一条定位在顶部的水平线:

11、一段左端线

div {
    background-image: 
        linear-gradient(to left, transparent 95%, white 95%);
    background-size: 1em 1em;
    background-repeat: no-repeat;
}

用类似的办法解决左端线问题,先定义一段左端线,注意 linear-gradient 函数的第 1 个参数改成 to left 了:

12、一条左端线

div {
    background-repeat: repeat-y;
}

平铺这段左端线,就得到了一条紧挨容器左侧的竖线:

13、All in one 的完美效果

div:nth-child(13) {
    background-image: 
        linear-gradient(to bottom, transparent 95%, white 95%),
        linear-gradient(to right, transparent 95%, white 95%),
        linear-gradient(to top, transparent 95%, w hite 95%),
        linear-gradient(to left, transparent 95%, white 95%);
    background-size: 1em 1em;
    background-repeat: repeat, repeat, repeat-x, repeat-y;

好了,我们把第8步不完美的网格线、顶端线、左端线都合起来,就是完美的网格线了,注意 background-repeart 的写法,它有 4 个参数,分别对应 background-image 里的 4 条线:

干得漂亮!收工。

原文链接:https://segmentfault.com/a/1190000021507641

作者:comehope


、使用 div 后,什么时候使用 table

Web标准并不排除表格的使用,但使用表格排版是不明智的,因为表格归根结底只是一种显示“数据”的方式。大家应该知道,在 Excel 中,表格就是用来放置数据信息的。使用表格显示信息能让浏览者阅读起来更轻松,表达也更清楚。

XHTML 中的元素可分为三大类,下面分别介绍。

辅助布局设计元素:主要指div、span等,这类元素的主要功能是布局整个页面。灵活使用这些元素,能让网页丰富多彩。

结构化元素或信息元素:主要指table、ul、pre、code等元素,是一种信息显示与整理方式,如 table 是用来显示表格信息的,ul是用来显示列表信息的,当需要用表格或列表的时候,用这两种方式来显示是合理的。

为实现某些功能而添加的元素:如添加关键字的meta keyword,设置链接的a等。由上面的分析可知,符合Web标准的设计思路是,使用div等布局元素来制作页面的布局、定位、色块、图像等,使用table、ul等元素来显示页面中需要展示的数据。这实际上是一个信息合理化整合的过程,什么地方该用什么元素还是照用不误。

二、初学 Web 标准的几个误区

初次接触 Web标准的用户可能会受表格布局或其他一些问题的影响,常见问题及解决建议如下:

1.不要用传统的表格思维来套div

用惯了表格的用户可能会觉得,CSS 布局就是将原来用table的地方用div来代替,原来是 table 嵌套,现在是 div嵌套。这种观点是错误的。

应该跳出表格布局的禁锢,抛弃一个td接一个td放置内容的思维方式。按前文所述,Web标准的目的是将内容和表现完全分离。即在加入表现之前,页面里有的仅仅是内容,在没有修饰的情况下,它就是一张有一些文字和图像(图像是指内容中的图像,是有真正意义的图像,而非修饰性的图像)的简单页面,这些文字和图像仅仅是依次罗列下来,只有结构,没有任何样式。当加人表现,将所有修饰的图像作为背景,用CSS 来定义每一块内容的位置、字体、颜色等时,才构成了一个完整的页面。

这样制作的页面才是内容与表现完全分离的,即抽掉 CSS 文件,剩下的就只是干净的内容。

2.不必为每块内容都创建一个id

内容都是有结构的,相同结构的内容可以用同一个样式来定义,如相同级别的标题、正文、图像等。对干多次引用的样式可以用cass 来定义,不需要全部用id:另外也不是说只能用 div 布局,在需要的时候,完全可以用p来代替。

至于仅仅为了行高、间距,或者一个修饰性图像而增加的div,随着大家对 CSS应用的熟练和理解,很快就会知道这是没有必要的。希望大家多研究 CSS,做出最简练、最有效的样式表。

HTML5流行的时代,网站前端也越来越受到大家的关注,但是还是有很多人表示有怀疑前端到底是做什么的,能够在网站建设中起到什么作用呢?很多公司的职位划分的时候是没有前端这个职位,只有特别专业或者具有很完善的公司体系才会安排这个职位,很多公司的安排会把前端与设计何为一起,还有把前端和后台建设合在一体,所以网站建设中前端给人的印象不是十分的深刻。

前端的职位已经不像很早以前,网站存在着简单的模板样式,那时的页面设计风格相对单一,对应的页面需求比较简单,并且当时的浏览器也基本是 IE6 的天下,javascript 也只是网页特效的代名词,HTML 页面本身没有引起太多人的关注,似乎只要能用 div 甚至 table 加 css 辅助把图片定好位,把页面内容预留好就 OK 了,并且这种观念存在了很长一段时间。

随着移动互联网业务的风靡,还有不同人群对网站建设要求的层次不同,网站的设计风格越来越个性化、专业化、精良化。交互复杂性的增加,AJAX 的应用,浏览器的更新换代,又让大家重新对最基本的页面本身重视起来。然后热议的就是浏览器的兼容性,碰到问题最热衷的就是满网络搜索 hack,顺便再骂骂 IE6、7……当这些都做一遍后,似乎又遇到了瓶颈,又开始寻找出路。我们就从这个阶段开始说起。

网站前端具体能够给网站带来哪些好处呢:

(1)能够给网站结构布局带来良好的展现:拿到设计图后一定要静心思考,多观察。先分框架然后规划结构,编写代码。特别在大型项目中,合理使用模块化的开发不论从整体进行还是拓展维护都有相当大的好处。

(2)关于 hack很多同学在页面开发时上网搜索最多的就是 hack 了,是否我们完全要依赖 hack 来实现页面兼容性,答案是否定的。大家经常比喻 IE6 向我们撒了一个谎,结果我们要再撒一百个谎来圆这个谎。不否认 IE6 经常让我们口吐鲜血,但不代表我们用更多的“谎言”来弥补就可以心安理得。大部分情况下可以通过变换思路调整 HTML 结构,或使用一些虽然无法解释但相对安全的 css 来干掉 hack。谁都无法预计使用 hack 什么时候会让我们栽一个大跟头。比如触发 layout 或 position:relative 就可以帮助解决很多 IE6 的问题。

(3)优美的代码:看到合理的标签使用、良好的注释、清晰的代码结构、用意准确的 css 不仅犹如欣赏一个艺术品,更为下游开发和协同开发降低了不小的沟通成本。特别是 HTML5 提供了更丰富的语义化标签,它们都苦苦地在等待战场上的冲锋号,让我们去解放它们吧!

(4)“工欲善其事,必先利其器”,除了实战经验和代码习惯的形成可以帮助我们提高效率外,想要提高对自己开发的进度掌控能力,还有很多辅助工具可以帮助我们进行页面开发。比如使用 Less 或 Sass 可以帮助我们拓展和组织 CSS,大大提高 CSS 的编写效率增加了可维护性。

(5)与HTML5的结合,HTML5时代的来临伴随着移动互联网的兴起创造了更大的机会,还有太多的东西值得我们去学习去发现。 HTML5 提供了丰富的 JS API 接口,需要我们去研究;CSS3的绚丽吸引了足够多的眼球,需要我们去研究;移动设备上如何开发更加适配的页面,需要我们去研究……