一、CSS概述

html显示效果有限,所以单独成立了一门语言就做css,

css是层叠样式表,用来定义网页的显示想过,可以解决html代码对样式定义的重复,

简单来说就是,css将网页内容和显示样式进行分离,降低了耦合性,提高了显示功能。

二、css和html相结合的方式

css和html在网页代码中相结合的方式有四种:

1.style属性方式

由于每一个html标签中都有一个style样式属性,所以可以利用标签中style属性来改变每个标签的显示样式。这个属性的值就是css代码

css中的属性与属性之间用;隔开,属性与属性值之间用:隔开

例:

<p style="bakegroud-color:#ffoooo;color:#ffffff">

段落内容

</p>

该方式比较灵活,但是对于多个相同标签的同一样式定义比较麻烦,适合局部修改

2.style标签方式(内嵌方式)

使用style标签的方式,也就是在head标签中加入style标签(在head的原因,一旦加载到css修饰的标签就可以显示出样式来),对多个标签进行统一修改。

其中style标签中要指明其类型属性type的值,表明使用什么东西去解析style中的代码,

并且style中的css代码要指明修饰(作用)的是哪个区域(标签),也就是css代码还要被{}起来并在前面写明修饰的是谁(表示这段代码修饰的对象),如下所示:

<head>

<style type="text/css">

p{color:#ff0000;}

</style>

</head>

该方式可以对单个页面的样式进行统一设置,但对于局部不够灵活

当head中有style标签定义了区域的样式,同时区域标签中又用style属性定义了显示的样式,这时显示样式的过程是,由于一开始就读到区域的样式了,一旦读到区域标签就显示出head中的样式来,读完区域标签时,读到区域的属性时,这是如果有同类的显示样式则会被新的,也就是style属性中定义的样式覆盖,即以最后加载的为准。这就是样式的重叠。

3.导入方式

当多个页面引用同样的样式时,这时为了不在每个页面(html)都复制相同的css代码,则把css代码独立出来形成一个css文件,让页面进行引用,即在页面的头部中加入style标签并引用,代码如下:

<head>

<style type="text/css">

@import url(div.css);

@import url(span.css);

</style>

</head>

其中div.css和span.css为独立出来的css文件。

注意,url括号后面必须要用分号结束,如果导入进来的样式与本页面定义的样式重复,以本页定义样式为准。

如果有多条导入,那么就要导入多条,如果直接在页面中导入则会很麻烦。由于导入语句也是css代码所以可以把导入语句单独出来形成一个css文件,这样页面只需包含这个文件即可。

代码如下:

<head>

<style type="text/css">

@import url(1.css);

</style>

</head>

其中1.css中的代码如下:

@import url(div.css);

@import url(span.css);

css代码的注释符号为/**/

把div,span等类型的区域分别形成css文件的好处(按类型形成css文件),在于粒度小了,便于复用,同时每个类型又都是独立的,也不存在重复的说法,所以这么做,同时在加上综合文件,也不会影响到html页面。

4.链接方式

使用html中,head标签中的link标签来实现,将样式文件连接进来的方式

<head>

<link rel="stylesheet" href="1.css" type="text/css"/>

<style type="text/css">

/*@import url(1.css);*//*css代码注释*/

</style>

</head>

其中link 的rel属性表示链接文件与当前文件的关系,比如上例中表示连接的文件是样式表,用于显示样式

href属性指向要连接的文件

type属性表示连接进来文件的类型。

这种导入方式与前面的style导入方式不同的是,link导入是html代码链接的,style导入是通过css代码导入的。

注意,可以通过多个link标签链接进来多个css文件,重复样式以最后链接进来的css样式为准。

三、样式优先级

一般情况下,样式是会覆盖的,那么谁覆盖谁呢,其中的优先级如下:

由外到内,由上到下。优先级由低到高。

也就是说一般情况下,后面加载的为准。

之所以说一般情况下,是因为里面还涉及到一些细节的优先级问题

四、css代码格式(css代码语法)

选择器名称{属性名:属性值;属性名:属性值;...}

属性与属性之间用分号隔开

属性与属性值直接用冒号连接

如果一个属性有多个值的话,那么多个值之间用空格隔开。

其中"选择器名称"是,样式要作用的标签,表示样式要作用在哪个(种)标签上。

其中"{}"表示定义样式的区间,里面是样式的内容,内容是由属性和属性值组成。

五、CSS选择器

选择器

就是指定css要作用的标签(容器),那个标签的名称就是选择器,意为:选择哪个容器。

选择器共有三种:

I、html标签名选择器,使用的就是html的标签名。

II、class选择器。就是使用标签中的class属性。

III、id选择器,其实使用的是标签中的id属性。

每个标签都定义了class属性(专门给css样式加载的属性)和id属性,用于对标签进行标识,方便对标签进行操作。

在定义中,多个标签的class属性值可以相同,而id值要唯一,因为js中经常用。

注意,class选择器比html标签名选择器优先级高,也就是说越少数优先级越高

所以,同时id选择器的优先级又比class选择器高。那么还有更高的么,就是不用选择器的(不用加载的),直接使用标签中的style属性写css代码的,优先级更高。

也就是

优先级:

标签选择器<类选择器<id选择器<style属性

1.class选择器

在标签中定义class属性并赋值,通过 标签名.class值 对该标签进行样式设置。

相同标签设置不同样式的时候,用class进行区分。

当有十个div标签5个相同样式,另外五个又是相同样式,这时可以把五个归为一类(class属性值相同),这样来设置样式

例如:

<head>

<style type="text/css">

div{

backgroud-color:#fff;

}

div.haha{

backgroud-color:#ff3;

}

</style>

</head>

<body>

<div>555</div>

<div class="haha">123</div>

</body>

注意,不但可以对多个相同标签进行样式设定,还可以对不同标签进行相同样式设定。

对不同标签进行统一样式设定时,如果还是使用 标签名.class值 的形式,则太麻烦并且还有重复代码,解决这个问题的方法是,使用 .class值 的形式 ,表示所有class属性值相同的标签使用相同的样式,

代码如下:

.haha{

backgroud-color:#ff3;/*作用于所有class属性值为haha的标签*/

}

<div class="haha">123</div>

<span class="haha">123</span>

<p class="haha">123</p>

同时可以预定义类选择器样式,实现动态显示样式,具体实现方法:

事先定义多个class属性值的选择器(内部有css显示样式),当有需要的时候,通过修改(指定)标签中class属性为某个值,就可以显示这个class属性值对应的显示样式

.haha{

backgroud-color:#ff3;/*作用于所有class属性值为haha的标签*/

}

.hehe{

backgroud-color:#fff;/*作用于所有class属性值为haha的标签*/

}

<div class="haha">123</div>

<span class="hehe">123</span>

<p class="haha">123</p>

2.id选择器

在标签中定义id属性并赋值,通过 标签名#id值 对该标签进行样式设置。

对不同标签进行统一样式设定时,如果还是使用 标签名#id值 的形式,则太麻烦并且还有重复代码,解决这个问题的方法是,使用 #id值 的形式 ,表示所有id属性值相同的标签使用相同的样式,

通常ID的取值在页面中是唯一的,因为该属性除了给css使用,还可以被js使用。所以id通常都是为了去标识页面中一些特定区域使用的。

代码如下:

#haha{

backgroud-color:#ff3;/*作用于所有class属性值为haha的标签*/

}

<div id="haha">123</div>

3.扩展选择器

1).关联选择器

标签是可以嵌套的,要让相同标签中的不同标签显示不同样式,就可以用此选择器。

多个标签时,只操作页面中某个标签中的该标签,也可以用此选择器。

例:

p{color:#00ff00;}

/*只操作页面中p标签中的b标签*/

p b {/*关联选择器,选择器中的选择器,如果还要嵌套则在b后面加空格再加标签,如p b a*/

color:#ffooo;

}

<p>123<b>df</b>fdf</p>

2).组合选择器

对多个不同选择器(多种选择器)进行相同样式设置的时候应用此选择器。

例:

p,div{color:#ff0000;}

.haha,p b{color:#ff0000;}

<p>123</p>

<div>dff</div>

<p>123<b>df</b>fdf</p>

注:多个不同选择器要用逗号隔开。

3).伪元素(伪标签)选择器

其实就在html中预先定义好的一些选择器。称为伪元素(伪标签)。是因为css的术语。

伪元素(伪标签),不是真正的标签,代表的是标签的某些状态。伪元素必须要先去找标签,并要用这些 状态和标签相结合

伪元素(伪标签)选择器格式:

标签名:伪元素(状态)。

类名 标签名。

类名:伪元素。

都可以

a:link 超链接未点击状态。

a:visited 被访问后的状态

a:hover 光标移到超链接上的状态(未点击)

a:active 点击超链接时的状态(事件(瞬间)效果,鼠标按的时候不松开时的状态)

通常点击前和点击后的效果是一样的,

样式效果顺序,也就是加载的顺序:L(点前) - V(点后) - H(悬停) - A(瞬间)

P:first-line 段落的第一行文本,

p:first-letter 段落的第一个字母,ie6浏览器不支持

:focus 具有焦点的元素,ie6浏览器不支持,在firefox中可以看到效果(省略了前面的标签,也就是标签都支持,一般是是在文本框里面用的多,用于点击文本框时的效果)

例:

hr标签为横线

a:link{

color:#fff;

}

a:hover{

color:#fff;

}

p:first-letter{

color:#fff;

}

input:focus{/*点击文本框时,背景变为蓝色,ie6浏览器不支持*/

background-color:#09f;

}

<input type="text"/>

其他标签也支持如上这些状态,也就是其他标签也支持伪元素选择器,比如:

div:hover{/*ie6浏览器不支持*/

color:#fff;

}

css api手册有所有的

六、css样式的结合应用

1.无序项目列表与 css样式的结合应用

ul标签:无序项目列表(类似word上的项目)

li标签: ul的子项

ul{

list-style-type:none;

list-style-image:url(1.bmp);/*ul中的每一项前面的符号为1.bmp图片*/

}

<ul>

<li>无序项目列表</li>

<li>无序项目列表</li>

<li>无序项目列表</li>

</ul>

2.表格与css样式的结合应用

table{

border-bottom:#0C0 double 3px;

border-left:#F00 solid 3px;

border-right:#FF0 dashed 3px;

border-top:#0C0 groove 3px;

width:500px;

}

table td{

border:#0CF  dotted 1px;

padding:20px;/*类似表格标签中的cellpadding属性*/

}

<table>

<tr>

<td>单元格一</td>

<td>单元格一</td>

</tr>

<tr>

<td>单元格一</td>

<td>单元格一</td>

</tr>

</table>

其中的边框,也就是border不光表格有div也有,也就是只要是区域都有,如:

div{

border:#F00 solid 3px;

height:200px;

width:400px;

}

3.输入文本框与css样式的结合应用

input {

border:none;

border-bottom:#000 1px solid;

}

.haha{/*形成可输入数据的表格*/

border:none;

}

姓名:<input type="text"  />成绩:<input type="text"  />

<table>

<tr>

<td><input type="text" class="haha" /></td>

<td><input type="text" class="haha" /></td>

</tr>

<tr>

<td>单元格一</td>

<td>单元格一</td>

</tr>

</table>

4.滤镜

和ps中类似,就是已经将某些常见的效果进行了封装,只要导入数据,立马就能显示效果。

css中的滤镜,在很多框架中已经封装好了

在网页中的图片的变换,都是可以通过滤镜做的,如滤镜中的fade

css api手册有所有的

七、css的盒子模型

div加css可以完成布局,并且比表格的方式灵活的多,所以现在最流行的就是div加css。

使用div加css完成布局时,首先要的就是把数据放到各个div区域中,这个区域就叫盒子,

具体来说,

用来封装数据的一片区域就叫css的盒子,

css盒子模型的基本内容有三项,

1).边框:border

上border-top

下border-bottom

左border-left

右border-right

2).内边距:padding(当盒子中数据太少时,可能下边距和右边距就不是该属性值了;

如果是两个属性值,则第一个是上下边距,第二个是左右边距,例:padding:20px 100px

如果是三个属性值,则第一个是上边距,第二个是左右边距,第三个是下边距例:padding:20px 100px 200px

如果是四个属性值,则第一个是上边距,第二个是右边距,第三个是下边距例,第一个是左边距:padding:20px 100px 200px 300px)

上padding-top

下padding-bottom

左padding-left

右padding-right

3).外边距:margin(所谓外边距,就是盒子距离其他盒子的距离,即盒子之间的距离,倘若某个方向上没有盒子,则表示的是距离整个页面边框(其实是body标签)的距离。当限定了盒子的高度和宽度时,可能下边距和右边距就不是该属性值了;)

上margin-top

下margin-bottom

左margin-left

右margin-right

注意当区域margin:0px时,会发现区域距离页面上边框还有一段距离,这是正是因为区域的外边距是和body之间的距离,而body距离页面上边框还有一段固定的距离,所以会这样。解决的方法是,

改变body的样式:

body{

margin:0px

}

代码如下:

/*

body{

margin:0px;

}

*/

div{

border:#09F solid 1px;

height:100px;

width:200px;/**/

}

#div_1{

/*border-bottom:#F60 2px dashed;*/

background-color:#F90;

/*padding:20px 100px 200px 300px;上 右 下 左

margin:0px;*/

float:left;

}

#div_2{

background-color:#0CF;

float:left;

}

#div_3{

background-color:#3F0;8

clear:left;/**/

}

<div id="div_1">

第一个盒子11第一个盒子11

</div>

<div id="div_2">

第二个盒子22

</div>

<div id="div_3">

第三个盒子33

</div>

八、css的布局

每一div区域都是一个块区域并带了换行。

布局,就涉及到布局属性

1.css的布局-漂浮(float属性)

属性值left:文本(定义了该属性的标签(选择器)的下一个标签(选择器/区域))流向对象(定义了该属性的标签(选择器))的右边,即当前对象(定义了该属性的标签(选择器))定义在最左边

属性值right:文本流向对象(标签(选择器))的左边

代码:

#div_1{

/*border-bottom:#F60 2px dashed;*/

background-color:#F90;

/*padding:20px 100px 200px 300px;上 右 下 左

margin:0px;*/

float:left;

}

漂浮可以让默认竖排列的变成横排列。

相对应的,还有清楚漂浮的属性:clear

clear:

属性值none 默认值,允许当前对象(定义了该属性的标签(选择器))两边都可以有浮动对象

left 不允许左边有浮动对象

right 不允许右边有浮动对象

both 都不允许

漂浮可以觉得标签(区域)排序的问题,但是漂浮要根据元素位置来确定漂浮的位置,相对来说(定位)位置不够准确,要微调。

手册上也有示例。

2.css的布局-定位

使用position属性,也就是定位属性,可以让盒子处于页面中的任意位置。

属性值,

static 无特殊定位遵循html规则

absolute 将对象(当前标签(选择器))从文档流中拖出,也就是说当前对象从当前图层脱离出来,形成新的图层,(重叠的部分)新的图层会覆盖当前图层,被脱离出来的当前对象再通过left top等属性就可以确定其在新图层中的位置。如果有程序修改left top值就会导致当前对象位置不断变化,也就是当前对象会动起来。

其中left top等属性相对的是最接近的并且定义了absolute的父对象(父节点(标签)),如果都没有的话,那么就依据(相对)body对象。

relative:对象不可层叠(absolute 可以重叠),但依据left ,right,top,bottom等属性在正常的文档流中偏移位置,也就是说,产生新图层后,当前对象在旧图层的位置依然保留,其他对象不会去占用那个保留的位置。

同时也符合规则:

left top等属性相对的是最接近的并且定义了absolute的父对象(父节点(标签)),如果都没有的话,那么就依据(相对)body对象。

代码如下:

#div_0{

background-color:#CCC;

height:400px;

width:400px;

position:relative;

top:100px;

left:100px;

}

#div_1{

background-color:#F90;

position:relative;

top:20px;

}

#div_2{

background-color:#0CF;

width:220px;

}

#div_3{

background-color:#3F0;8

}

<div id="div_0">

<div id="div_1">

第一个盒子11第一个盒子11

</div>

<div id="div_2">

第二个盒子22

</div>

<div id="div_3">

第三个盒子33

</div>

</div>

3.css的布局-图文混排

先将数据用标签进行封装

代码如下:

#imgtext{

border:#06F dashed 1px;

width:180px;

}

#img{

float:right;

}

#text{

color:#F60;

font-family:"华文隶书";

}

<div id="imgtext">

<div id="img">

<img src="9.bmp" />

</div>

<div id="text">

这是一个美女,说明文字。

一切尽在不言中。哇

!这是一个美女,说明文字。

一切尽在不言中。哇!

这是一个美女,说明文字。

一切尽在不言中。哇!

</div>

</div>

4.css的布局-图像签名

需要用到定位属性,最好当前定位属性的对象的父对象也是定位属性的,这样移动整个区域(父对象),当前定位属性也是定位的。

代码如下:

#text{

font-family:"华文隶书";

font-size:24px;

position:absolute;

top:80px;

left:10px;

}

#imgtext{

border:#F60 dotted 1px;

width:500px;

position:absolute;

top:100px;

}

<div id="imgtext">

<div id="img">

<img src="1.jpg" height="300" width="500" />

</div>

<div id="text">

花丛中的美女,我的!

</div>

</div>

效果会导致文本文字显示在图片,但是很显然,下载图片下来的时候文本是不会在图片上的。

Web前端之CSS详解20180329的更多相关文章

  1. Web前端性能优化详解之CSS与JS加载

    浏览器加载页面和渲染过程 加载过程 浏览器根据DNS 服务器得到域名的IP地坛 向这个 IP 的机器发送 HTTP请求 服务器收到,处理并返回 HTTP请求 浏览器得到返回内容 渲染过程 根据 HTM ...

  2. Web前端之iframe详解

    iframe基本内涵 通常我们使用iframe直接直接在页面嵌套iframe标签指定src就可以了. <iframe src="demo_iframe_sandbox.htm" ...

  3. Web前端之HTML详解20180327

    一.html概述 html就是超文本标记语言的简写,是最基础的网页语言.html通过标签来定义语言,代码都是由标签所组成. 1.html代码从<html>开始</html>结束 ...

  4. Web前端之Javascript详解20180330

    一.javascript概述 javascript是基于对象和事件的脚本语言. 特点: 1.安全性(不允许直接访问本地硬盘(因为是被远程的浏览器解释)),它可以做的就是信息的动态交互 2.跨平台性(只 ...

  5. CSS详解

    Web前端开发css基础样式总结 颜色和单位的使用 颜色 用颜色的名字表示颜色,比如:red 用16进制表示演示 比如:#FF0000 用rgb数值表示颜色,rgb(红,绿,蓝),每个值都在0-255 ...

  6. DIV+CSS详解

    DIV+CSS详解 ✪DIV+CSS"这种叫法其实是一种不准确的叫法 在做笔记的最前面必须先给大家纠正一个错误,就是"DIV+CSS"这种叫法其实是一种不准确的叫法,是国 ...

  7. Web容器中DefaultServlet详解 JspServlet DefaultServlet

    Web容器中DefaultServlet详解 https://blog.csdn.net/qq_30920821/article/details/78328608 Web容器中DefaultServl ...

  8. Web容器中DefaultServlet详解

    万分感谢原文作者:_licho 原文链接:https://blog.csdn.net/qq_30920821/article/details/78328608 Web容器中DefaultServlet ...

  9. jquery的css详解(二)

    jq的工具方法style用于设置样式,jq的实例方法css在设置样式时就是调用的它,接下来分析一下源码. jQuery.extend({ ............................ st ...

随机推荐

  1. umask命令详解

    基础命令学习目录首页 原文链接:https://blog.csdn.net/stpeace/article/details/45509425        umask命令用得相对不多, 而umask函 ...

  2. Final发布:文案+美工展示博客

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2476 小组介绍 组长:付佳 组员:张俊余 李文涛 孙赛佳 田良 于洋 段 ...

  3. final文案+美工展示

    作业要求:https://edu.cnblogs.com/campus/nenu/SWE2017FALL/homework/1438 团队介绍:thunder 组成员及各位博客地址: 1.王航:htt ...

  4. Task 6.2站立会议一

    今天大家把这两天查的资料都拿出来整合到了一起,并仔细分析了其中的联系和区别. 因为大家每个人的思路都不一样,有各种各样的想法和不同的意见,所以最终统一意见是很难的一个过程.开始大家认我们可以做一个单独 ...

  5. POJ 2411 Mondriaan's Dream 插头dp

    题目链接: http://poj.org/problem?id=2411 Mondriaan's Dream Time Limit: 3000MSMemory Limit: 65536K 问题描述 S ...

  6. 2018软工实践第八次作业-团队项目UML设计

    团队信息 队员姓名与学号 学号 姓名 博客链接 124 王彬(组长) 点击这里 206 赵畅 点击这里 215 胡展瑞 点击这里 320 李恒达 点击这里 131 佘岳昕 点击这里 431 王源 点击 ...

  7. SGU 223 little kings BSOJ2772 状压DP

    1896 [SCOI2005]互不侵犯King [问题描述]在n*n(1<=n<=10)的棋盘上放k(0<=k<=n*n)个国王(可攻击相邻的8 个格子),求使它们无法互相攻击 ...

  8. Swift-懒加载使用

    //    懒加载 lazy var tableView : UITableView = {         let tempTableView = UITableView()         ret ...

  9. A网站访问B网站,跨域问题

    跨域异常:XMLHttpRequest cannot load  ''. No 'Access-Control-Allow-Origin' header is present on the reque ...

  10. SEO优化之HTML代码优化最重要的5个标签

    众所周知,HTML代码一直是搜索引擎抓取的重点.搜索引擎会将HTML中的某些元素标签作为影响网页排名的重要依据 在我们之前的文章中也或多或少地向大家介绍了有关HTML代码的优化技巧,接下来将系统地讲解 ...