整合营销服务商

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

免费咨询热线:

一文读懂HTML和CSS的关系


eb开发是一个很依赖经验的领域,然而这对初学者很不友好。

知识一旦脱离了应用场景就会变得晦涩、空洞,且知识本身也满足“二八定律”,“抓大放小”是提高学习效率的关键。

下文向大家介绍了HTML和CSS之间的关系。内容选自《HTML 5与CSS 3核心技法(全彩)》一书。本书主线清晰,讲解简洁,并提供在线效果演示效果,非常适合小白上手!


1 HTML是骨架

很难想象一个人在桌前对着一块砧板坐一夜,隔一会儿就噼里啪啦敲几下,一会儿哭一会儿笑,是一种什么景象。事实上,在猫眼中我们就是这样的。只不过我们面对的是一块会发光的“砧板”而已。但为什么这块“板子”如此吸引人?“上网”到底是在做什么?

获取信息。

重点在“信息”,一种看不见摸不着却真实存在的东西。无论“1 + 1 = 2”这段字符显示得多么粗糙,都不会影响它传递了完整的信息,以及这条信息的内在逻辑是正确的,不是吗?HTML就是用来盛放最核心的内容——信息。

所以,在CSS和JavaScript出现之前,HTML就出现了。这是必然的,因为如果连最核心的信息都无法有效传递,那围绕着它的一切装饰物和附属品都是毫无意义的。

除满足承载核心信息的需求外,HTML还解决了一个重要的问题——将信息结构化。

试想有这样一篇文章:

背影

我说道:“爸爸,你走吧。”他望车外看了看,说:“我买几个橘子去。你就在此地,不要走动。”我看那边月台的栅栏外有几个卖东西的等着顾客。走到那边月台,须穿过铁道,须跳下去又爬上去。父亲是一个胖子,走过去自然要费事些。我本来要去的,他不肯,只好让他去。我看见他戴着黑布小帽,穿着黑布大马褂,深青布棉袍,蹒跚地走到铁道边,慢慢探身下去,尚不大难。可是他穿过铁道,要爬上那边月台,就不容易了。他用两手攀着上面,两脚再向上缩;他肥胖的身子向左微倾,显出努力的样子。

评论

王花花 大概,天底下的父亲,老去的样子都有些共同的特质吧

李拴蛋 我们都不愿意承认他老了

刘备备 想吃橘子...

此时上面的信息基本没有结构,只能通过断行或缩进尽可能让内容更易读,编辑时的状态就是其最终的显示效果。

HTML就派上了用场,见下方的代码:

代码

<artcle>

<h1>背影</h1>

<p>

我说道:“爸爸,你走吧。”他望车外看了看,说:“我买几个橘子去。你就在此地,不要走动。”我看那边月台的栅栏外有几个卖东西的等着顾客。走到那边月台,须穿过铁道,须跳下去又爬上去。父亲是一个胖子,走过去自然要费事些。我本来要去的,他不肯,只好让他去。我看见他戴着黑布小帽,穿着黑布大马褂,深青布棉袍,蹒跚地走到铁道边,慢慢探身下去,尚不大难。可是他穿过铁道,要爬上那边月台,就不容易了。他用两手攀着上面,两脚再向上缩;他肥胖的身子向左微倾,显出努力的样子。

</p>

</artcle>

<section id="comment-list">

<div class="title">评论</div>

<div class="comment">

<strong class="username">王花花</strong>

<span class="content">大概,天底下的父亲,老去的样子都有些共同的特质吧</span>

</div>

<divclass="comment">

<strong class="username">李拴蛋</strong>

<span class="content">我们都不愿意承认他老了</span>

</div>

<div class="comment">

<strong class="username">刘备备</strong>

<span class="content">想吃橘子...</span>

</div>

</section>

一头雾水没关系,后面我们会细说每一个部分。总之这段内容给人感觉反而更繁琐。但繁琐是代价,重要的是现在这段信息有结构了。这就意味着计算机可以通过结构的规律将其显示得更便于阅读(甚至是交互)。

以下是不加任何装饰性内容直接让浏览器呈现的结果:

效果


这是纯HTML在没有引入任何装饰时的显示效果。很明显,即便是这样也比纯文字状态易读了许多。但注意,HTML本身没有样式,字体大小和粗细有变化的原因是浏览器的默认样式起了作用,与HTML没有关系。而重点就在这里,这意味着我们可以基于这个结构设计自己的页面效果,见下方的示例。

代码

<style>

body { font-family: 'Microsoft YaHei', sans-serif; }

#comment-list { background: #f0f0f0; padding: 10px; border: 1px solid #ccc; margin-top: 25px; }

#comment-list .comment { margin-top: 10px; margin-bottom: 10px; }

#comment-list .title {

color: #777; font-size: 1.1rem; padding-bottom: 5px;

border-bottom: 1px solid #ccc;

}

</style>

<artcle>

<h1>背影</h1>

<p>

我说道:“爸爸,你走吧。”他望车外看了看,说:“我买几个橘子去。你就在此地,不要走动。”我看那边月台的栅栏外有几个卖东西的等着顾客。走到那边月台,须穿过铁道,须跳下去又爬上去。父亲是一个胖子,走过去自然要费事些。我本来要去的,他不肯,只好让他去。我看见他戴着黑布小帽,穿着黑布大马褂,深青布棉袍,蹒跚地走到铁道边,慢慢探身下去,尚不大难。可是他穿过铁道,要爬上那边月台,就不容易了。他用两手攀着上面,两脚再向上缩;他肥胖的身子向左微倾,显出努力的样子。

</p>

</artcle>

<section id="comment-list">

<div class="title">评论</div>

<div class="comment">

<strong class="username">王花花</strong>

<span class="content">大概,天底下的父亲,老去的样子都有些共同的特质吧</span>

</div>

<div class="comment">

<strong class="username">李拴蛋</strong>

<span class="content">我们都不愿意承认他老了</span>

</div>

<div class="comment">

<strong class="username">刘备备</strong>

<span class="content">想吃橘子...</span>

</div>

</section>

效果

这里只是举了一个小示例。你可以轻而易举地让页面的风格千变万化,进而让用户体验有所差异(或差距)。“千变万化”因CSS灵活、强大,“轻而易举”因HTML简洁、有序。结构的力量!

CSS是皮肤

一个充满活力的生态是不满足于现状的。人们在适应了便利地浏览核心信息之后,就会想方设法改进浏览的体验。比如,让自己的博客以多栏显示,以便在视觉上区分不同板块;修改字体颜色,以便强调一些重要信息等。

起初的做法是——准备几种特殊的标签,专门用于样式的指定。涉及布局的地方,如果没有特殊标签就直接用表格布局。以下没有任何样式的状态(以下代码均不需要看懂):

代码

<h1>标题</h1>
<p>
从前有座山,山里有个庙,庙里...

</p>

效果


此时的页面结构下。

如果想让标题居中,则需要给其添加元素<center>,见下方的示例。

代码

<center>
<h1>标题</h1>
</center>
<p>
从前有座山,山里有个庙,庙里...
</p>

效果

此时的页面结构如下。

居中标题的目的确实达到了,但是有一个很大的问题:如果我改变主意了,不想让其居中了,那么我还得再去将<center>元素去掉。这对于简单的页面确实可行,但如果是复杂的页面,这种做法的工作量就是噩梦,因为每个地方都得修改,无论是对齐方式、颜色、背景色,还是大的布局都必须通过修改结构才能完成。这种做法的最大问题是可维护性太差,很多时候为了一种样式要修改很多不必要的结构,枯燥、重复、削足适履的工作太多,基本上写一次就再也不想改了。

这个问题亟待解决,而且解决方案还要兼容现有规则。现有规则是什么?HTML的语法及结构。不过既然HTML已经有结构了,为什么不好好利用呢?

以前面示例中的文章页面为例,如果我们想更改标题,是否可以先统一选中所有标题,然后说明想要什么样式规则呢?就像下面这样:

所有h1 元素听着

对齐方式 居中。

字体颜色 黑色。

如果想将所有段落字体放大,则像下面这样:

所有p 元素听着

字体大小 150%。

这种方式的确很高效!同时这个规则与HTML语法无关,相当于另一种语言。这样结构和样式就不会互相影响,结构是结构,样式是样式,两者隔离开了。如果想修改样式,则完全不需要劳HTML大驾,只需要修改样式文件即可,更便于管理和维护。这就是CSS,只不过其语法更简洁。

下面以修改标题对齐方式为例:

h1 { /* 所有h1 元素听着 */

text-align: center; /* 对齐方式 居中 */

}

通过批量选择和处理,极大地提高了开发效率,降低了维护成本,四两拨千斤。

(完)


图书推荐


《HTML 5与CSS 3核心技法(全彩)》

表严肃 著

本书能够为自学Web开发初学者建立一套HTML与CSS的核心知识框架,同时借助丰富的示例让初学者有一个愉悦、轻松的学习过程。

想从事前端开发的,可将本书作为学习的起点。正从事前端开发的,可将本书作为速查的手册。

一篇文章说了HTML,现在再来说一说CSS,所谓CSS是指层叠样式表 (Cascading Style Sheets),通过引入样式表,从而极大的提高了工作效率。

搭配视频观看效果更佳~~

Web前端开发零基础入门HTML/CSS/JavaScript

https://www.ixigua.com/6907467670300393988


什么是CSS?

Cascading Style Sheet

层叠样式表语言(不是编程语言,属于样式表语言,没有变量、数据类型、控制语句...)

CSS其实是专门用来修饰HTML的,让HTML更好看。

CSS是HTML的化妆品。

CSS是为HTML服务的,所以HTML还是主体,CSS是依附在HTML上的,

所以进行CSS的开发,我们还是需要新建html/htm文件。

在HTML中怎么嵌入CSS样式呢?

第一种方式:内联定义

第二种方式:定义内部样式块对象

第三种方式:链入外部样式表文件(这种方式最常用!)

关于选择器的优先级:

  • 标签选择器优先级最低。
  • 其次是类选择器。
  • 最高优先级是id选择器。

CSS设置背景(background)

  • 背景颜色 background-color
  • 背景图片 background-image
  • 背景重复 background-repeat:repeat-x/repeat-y
  • 背景位置 background-position:bottom/left/top/right/center
  • 背景关联 background-attachment:fixed/scroll

综合写法:

.tagName{background:#ffffff url(“aa.jpg”) no-repeat right left;}

CSS设置文本格式

通过文本属性,您可以改变文本的颜色、字符间距,对齐文本,装饰文本,对文本进行缩进,等等。

文本缩进 :Text-indent:2em

文本对齐方式:Text-align:left/right/center/ justify

文本修饰:Text-decoration:underline/line-through/overline/none

字符间距:Word-spacing:px/em 英文单词之间的间隔;

Letter-spacing:px/em汉字和英文字母之间的间隔;

文本转换:Text-transform:uppercase/lowercase/ capitalize

行与行间距:Line-height:px/%

垂直对齐图像: vertical-align:text-top/text-bottom

文本阴影:text-shadow:水平偏移,垂直偏移 颜色

字体

字体类型:font-family:”sans-serif”;

字体样式:font-style:normal ;

字体大小:font-size:20px/3.75em/100%;默认大小为16px,字体为宋体

字体加粗:font-weight:normal;

字体的转变:font-variant:normal/smallcaps;

CSS链接

链接的四种状态

a:link {color:#FF0000;}     /* 未被访问的链接 */
a:visited {color:#00FF00;}  /* 已被访问的链接 */
a:hover {color:#FF00FF;}    /* 鼠标指针移动到链接上 */
a:active {color:#0000FF;}   /* 正在被点击的链接 */

【注意】当为链接的不同状态设置样式时,请按照以下次序规则:

a:hover 必须位于 a:link 和 a:visited 之后

a:active 必须位于 a:hover 之后

去掉a链接默认的下划线

text-decoration:{none/underline}

a:link {text-decoration:none;}
a:visited {text-decoration:none;}
a:hover {text-decoration:underline;}
a:active {text-decoration:underline;}

创建链接块

display:block;

列表样式

在一个无序列表中,列表项的标志 (marker) 是出现在各列表项旁边的圆点。在有序列表中,标志可能是字母、数字或另外某种计数体系中的一个符号。

要修改用于列表项的标志类型,可以使用属性 list-style-type:

ul {list-style-type : square;}

上面的声明把无序列表中的列表项标志设置为方块。

列表项图像

你可能想对各标志使用一个图像,这可以利用 list-style-image 属性做到:

ul li {list-style-image : url(xxx.gif);}

列表标志位置

ul{
  list-style-position:inside;
  }

CSS表格

表格边框

table,th,td{border:1px solid red;}

折叠边框

border-collapse:collapse;

  • 表格的宽度和高度

width,height

  • 表格的文字水平对齐

text-align:center/right/left;

  • 表格的文字垂直对齐

vertical-align:bottom;

  • 表格的内边距

padding

  • 表格的背景颜色

background

盒子模型

margin: 包括margin-top, margin-right, margin-bottom, margin-left, 控制块级元素之间的距离, 它们是透明不可见的。

根据上, 右, 下, 左的顺时针规则, 简写为

margin: 40px 40px 40px 40px;

为便于记忆, 请参考下图:

当上下, 左右margin值分别一致, 可简写为:

margin: 40px 40px;

前一个40px代表上下margin值, 后一个40px代表左右margin值.

当上下左右margin值均一致, 可简写为:

margin: 40px;

padding: 包括padding-top, padding-right, padding-bottom, padding-left, 控制块级元素内部, content与border之间的距离

【注意】当你想让两个元素的content在垂直方向(vertically)分隔时, 既可以选择padding-top/bottom, 也可以选择margin-top/bottom, 在此建议你尽量使用padding-top/bottom来达到你的目的, 这是因为css中存在Collapsing margins(折叠的margins)的现象.

边框

  • 边框样式:border-style:none/dotted/dashed/solid/double/groove/ridge/inset/outset/hidden
  • 边框宽度:border-width
  • 边框颜色:border-color

综合写法:

border:1px solid red;

轮廓(outline)

可以按顺序设置如下属性:

  • outline-color
  • outline-style
  • outline-width

CSS所有尺寸

  • 宽度

width/min-width/max-width

  • 高度

height/min-height/max-height

  • 行高

line-height

display显示类型

隐藏元素—–display:none或者visibility:hiddden

display通常可以设置为none、inline、block

visibility通常可以设置为hidden、visible

二者的区别在于display会将元素隐藏掉,并且位置不再被占据,而visibility则是占据原来的位置。

CSS块级元素和内联元素—-display:block/inline/inline-block;

CSS定位(position)

position 属性值的含义:

static

元素框正常生成。块级元素生成一个矩形框,作为文档流的一部分,行内元素则会创建一个或多个行框,置于其父元素中。

relative

元素框偏移某个距离。元素仍保持其未定位前的形状,它原本所占的空间仍保留。

absolute

元素框从文档流完全删除,并相对于其包含块定位。包含块可能是文档中的另一个元素或者是初始包含块。元素原先在正常文档流中所占的空间会关闭,就好像元素原来不存在一样。元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框。

fixed

元素框的表现类似于将 position 设置为 absolute,不过其包含块是视窗本身。

CSS浮动

设置浮动:float:left/right;

清除浮动:clear:both/left/right/null;

浮动的两个影响因素:1、文档流 2、显示类型

元素内容溢出

  • 溢出滚动条

overflow:scroll(不管是否溢出都会有滚动条)、auto(自动添加)

  • 溢出隐藏

overflow:hidden;

CSS的相关特性

1、继承性

它不仅允许样式应用于某个特定的html标签元素,而且还可引用于其后代;

2、CSS层叠

当有相同权重的样式存在时,会根据这些CSS样式的前后顺序来决定,处于最后面的CSS样式会被应用,后面的CSS样式会覆盖前面的样式。

总而言之:内联样式表(标签内部)>嵌入样式表(当前文件中)>外部样式表(外部引入文件)

、什么是css

css的英文全称是:Cascading Style Sheets,翻译过来叫:层叠样式表。

这其中有两个关键字,一个是层叠一个是样式。

样式指的是给html调整样式

层叠指的是可以叠加调整,给一个html的a标签指定5条样式,5条样式叠加起来作用到html的标签上。

举个更容易理解的例子:(在index.html中写一个a标签)

用css给a标签加样式,一共加了五条,具体看图片中的注释。

5条样式都加到了a标签上面,都生效,这就是层叠的意思了。

二、css的作用

从上面的例子中也可以明显地感受到,css的主要作用就是美化html的。使用css可以让html变得更加的丰富多彩。如果学了JavaScript的话就可以让html动起来。


在正式开讲css前,先补充一点关于sublime text的快捷使用方法,这样我们写代码的速度就会变得快起来。

如果还有不知道sublime text是什么的同学,可以返回头去看看《踏上编程之路的必经之路之html篇二》,其中用动图的方式仔细讲解了如何下载它。


在sublime text这款编辑器里面可以快速生成html的主要结构(头部、体部),接下来看动图演示:



没错,只要输入一个“!”,按tab键就能快速生成html的主要结构代码了(下图红框的框住的就是tab键)

除了可以快速生成上面代码,还以快速生成经常使用的各种标签代码:(如下图演示)

如果你要写一个a标签,只需要写a再按tab键,sublime text就会自动给你补全代码。

当然了,还有更快捷的

(接下来快捷生成<a href="https://www.baidu.com">百度</a>)

在“[]”里面写要给a标签添加的属性,在{}里面写a标签的文字。如果有多个属性的就写两个“[]”。

具体看动图演示:

接下来再看看ul和li标签如何快速生成(ul里面包含5个li)

新闻后面的$用于生成一个序号,当然你也可以不写,也可以写两个,写两个的话生成的就会是新闻01、新闻02


在sublime text中只要是html的标签就可以快捷生成,那在来试一试table

我们学过很多的html标签,你都可以拿来尝试一下,要想事半功倍,熟练使用sublime text是个有效的途径。

三、css的基本格式


在css的初始阶段,建议大家把css代码写在html的head标签中。


css代码的样式代码写在style标签中。


具体看一下图:


写一个a标签,让a标签中的字变为红色

在style中写css代码,没有style,是不会有效果的。style可以写在任意位置,但是为了代码规范,约定俗成都写在head标签中。


style中我们先要指定给哪一个标签添加样式,这里我们指定了a。这种方式也叫做css选择器,就是你要给谁添加样式,你得先指定或者选定一个标签,然后再写你要添加的样式代码。我们这里选定a,给a添加字体变红的的样式。


上面代码在浏览器中的效果如下:

好了,今天的内容就这么多。记得要勤动手练习。