CSS 基础详解

1.简介
     CSS全称为“层叠样式表 (Cascading Style Sheets)”,它主要是用于定义HTML内容在浏览器内的显示样式,如文字大小、颜色、字体加粗等。CSS语法虽然简单,但是要想真正的掌握CSS还是要花费一定时间的,尤其是布局和各种样式的实现,作为后台工程师来说不需要很深的CSS功底,只需要了解基本语法即可。

2.CSS 样式基本知识:
(1) 内联式css样式,直接写在现有的HTML标签中。
     在标签的style属性中来编写样式(不推荐使用)
<p style="color:red"></p>    
(2) 嵌入式css样式,写在当前的文件中
在 style标签中编写样式,一般写在head标签里面(推荐的方式)
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>嵌入式css样式</title>
<style type="text/css">
span{
   color:red;
}
</style>
</head>
<body>
    <p>慕课网,<span>超酷的互联网</span>、IT技术免费学习平台,创新的网络一站式学习、实践体验;<span>服务及时贴心</span>,内容专业、<span>有趣易学</span>。专注服务互联网工程师快速成为技术高手!</p>
</body>
</html>
(3) 外部式css样式,写在单独的一个文件中
     外部式css样式(也可称为外联式)就是把css代码写一个单独的外部文件中,这个css样式文件以“.css”为扩展名,在<head>内(不是在<style>标签内)使用<link>标签将css样式文件链接到HTML文件内,如下面代码:
     a.index.html中:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>嵌入式css样式</title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
    <p>慕课网,<span>超酷的互联网</span>、IT技术免费学习平台,创新的网络一站式学习、实践体验;<span>服务及时贴心</span>,内容专业、<span>有趣易学</span>。专注服务互联网工程师快速成为技术高手!</p>
</body>
</html>
     b.style.css中
span{
   color:red;
   font-size: 90px ;
}
 注意:
     ① css样式文件名称以有意义的英文字母命名,如 main.css。
     ② rel="stylesheet" type="text/css" 是固定写法不可修改。
     ③ <link>标签位置一般写在<head>标签之内。

3.CSS选择器:
(1) 什么是选择器?
     每一条css样式声明(定义)由两部分组成,形式如下:
选择器{
    样式;
}
     在{}之前的部分就是“选择器”,“选择器”指明了{}中的“样式”的作用对象,也就是“样式”作用于网页中的哪些元素。比如下面代码编辑器中第7行代码中的“body”就是选择器。
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>选择器</title>
<style type="text/css">
body{
    font-size:12px;
    color:red;    
}
</style>
</head>
<body>
<p>慕课网(IMOOC)是学习编程最简单的免费平台。慕课网提供了丰富的移动端开发、php开发、web前端、html5教程以及css3视频教程等课程资源。它富有交互性及趣味性,并且你可以和朋友一起编程。</p>
</body>
</html>
(2) 元素选择器(标签选择器)
例子:p {color: red; font-size: 12px;}
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>认识html标签</title>
<style type="text/css">

h1 {color: red; font-weight: normal;}
</style>
</head>
<body>
    <h1>勇气</h1>
    <p>三年级时,我还是一个胆小如鼠的小女孩,上课从来不敢回答老师提出的问题,生怕回答错了老师会批评我。就一直没有这个勇气来回答老师提出的问题。学校举办的活动我也没勇气参加。</p>
    <p>到了三年级下学期时,我们班上了一节公开课,老师提出了一个很简单的问题,班里很多同学都举手了,甚至成绩比我差很多的,也举手了,还说着:"我来,我来。"我环顾了四周,就我没有举手。</p>
    <img src="http://img.mukewang.com/52b4113500018cf102000200.jpg" >
</body>
</html>
(3) 类选择器
例子:.stress{color: red; font-size: 12px;}
<span class="stress">胆小如鼠</span>
注意:
     ①  英文圆点开头
     ② 其中类选器名称可以任意起名(但不要起中文噢)
使用方法:
     第一步:使用合适的标签把要修饰的内容标记起来,如下:<span>胆小如鼠</span>
     第二步:使用class="类选择器名称"为标签设置一个类,如下:<span class="stress">胆小如鼠</span>
     第三步:设置类选器css样式,如下:.stress{color:red;}/*类前面要加入一个英文圆点*/
(4) id选择器
例子:#setGreen{color: red; font-size: 12px;}
<span id="setGreen">公开课</span>
   ① 为标签设置id="ID名称",而不是class="类名称"。
   ② ID选择符的前面是井号(#)号,而不是英文圆点(.)。
(5) 子选择器
     还有一个比较有用的选择器子选择器,即大于符号(>),用于选择指定标签元素的第一代子元素。
     .food>li{border:1px solid red;}
     这行代码会使class名为food下的子元素li(水果、蔬菜)加入红色实线边框。
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>子选择符</title>
<style type="text/css">
.food>li{border:1px solid red;}/*添加边框样式(粗细为1px, 颜色为红色的实线)*/
.first>span{border:1px solid red;}
</style>
</head>
<body>
<p class="first">三年级时,<span>我还是一个<span>胆小如鼠</span>的小女孩</span>,上课从来不敢回答老师提出的问题,生怕回答错了老师会批评我。就一直没有这个勇气来回答老师提出的问题。学校举办的活动我也没勇气参加。</p>
<h1>食物</h1>
<ul class="food">
    <li>水果
        <ul>
            <li>香蕉</li>
            <li>苹果</li>
            <li>梨</li>
        </ul>
    </li>
    <li>蔬菜
        <ul>
            <li>白菜</li>
            <li>油菜</li>
            <li>卷心菜</li>
        </ul>
    </li>
</ul>
</body>
</html>
(6) 通用选择器
     通用选择器是功能最强大的选择器,它使用一个(*)号指定,它的作用是匹配html中所有标签元素,如下使用下面代码使用html中任意标签元素字体颜色全部设置为红色: * {color:red;}
(7) 伪类选择符
     伪类选择符,它允许给html不存在的标签(标签的某种状态)设置样式,比如说我们给html中一个标签元素的鼠标滑过的状态来设置字体颜色: a:hover{color:red;}
     上面一行代码就是为 a 标签鼠标滑过的状态设置字体颜色变红。这样就会使第一段文字内容中的“胆小如鼠”文字加入鼠标滑过字体颜色变为红色特效。
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>伪类选择符</title>
<style type="text/css">
a:hover{
    color:red;

}
</style>
</head>
<body>
    <h1>勇气</h1>
    <p class="first">三年级时,我还是一个<a>胆小如鼠</a>的小女孩,上课从来不敢回答老师提出的问题,生怕回答错了老师会批评我。就一直没有这个勇气来回答老师提出的问题。学校举办的活动我也没勇气参加。</p>
    <p id="second">到了三年级下学期时,我们班上了一节公开课,老师提出了一个很<span>简单</span>的问题,班里很多同学都举手了,甚至成绩比我差很多的,也举手了,还说着:"我来,我来。"我环顾了四周,就我没有举手。</p>
    <img src="http://img1.sycdn.imooc.com/52b4113500018cf102000200.jpg" >
</body>
</html>
(8) 分组选择符
     当你想为html中多个标签元素设置同一个样式时,可以使用分组选择符(,),如下代码为右侧代码编辑器中的h1、span标签同时设置字体颜色为红色:h1,span{color:red;}

4.CSS的继承、层叠和特殊性
(1) 继承是一种规则,它允许样式不仅应用于某个特定html标签元素,而且应用于其后代。比如下面代码:如某种颜色应用于p标签,这个颜色设置不仅应用p标签,还应用于p标签中的所有子元素文本,这里子元素为span标签。
p{color:red;}
<p>三年级时,我还是一个<span>胆小如鼠</span>的小女孩。</p>
     可见右侧结果窗口中p中的文本与span中的文本都设置为了红色。但注意有一些css样式是不具有继承性的。如border:1px solid red;
p{border:1px solid red;}
<p>三年级时,我还是一个<span>胆小如鼠</span>的小女孩。</p>
     在上面例子中它代码的作用只是给p标签设置了边框为1像素、红色、实心边框线,而对于子元素span是没用起到作用的。 
(2) 层叠
     层叠就是在html文件中对于同一个元素可以有多个css样式存在,当有相同权重的样式存在时,会根据这些css样式的前后顺序来决定,处于最后面的css样式会被应用。
     如下面代码:
p{color:red;}
p{color:green;}
<p class="first">三年级时,我还是一个<span>胆小如鼠</span>的小女孩。</p>
     最后 p 中的文本会设置为green,这个层叠很好理解,理解为后面的样式会覆盖前面的样式。
(3) 特殊性
     我们在做网页代码的时,有些特殊的情况需要为某些样式设置具有最高权值,怎么办?这时候我们可以使用!important来解决。
     如下代码:
p{color:red!important;}
p{color:green;}
<p class="first">三年级时,我还是一个<span>胆小如鼠</span>的小女孩。</p>
这时 p 段落中的文本会显示的red红色。
注意:!important要写在分号的前面
     这里注意当网页制作者不设置css样式时,浏览器会按照自己的一套样式来显示网页。并且用户也可以在浏览器中设置自己习惯的样式,比如有的用户习惯把字号设置为大一些,使其查看网页的文本更加清楚。这时注意样式优先级为:浏览器默认的样式 < 网页制作者样式 < 用户自己设置的样式,但记住!important优先级样式是个例外,权值高于用户自己设置的样式。

5.CSS格式化排版
(1) 文字排版--字体:body{font-family:"Microsoft Yahei";}
(2) 文字排版--字号、颜色:body{font-size:12px;color:#666}
(3) 文字排版--粗体:p span{font-weight:bold;}
(4) 文字排版--斜体:p a{font-style:italic;}
(5) 文字排版--下划线:p a{text-decoration:underline;}
(6) 文字排版--删除线:.oldPrice{text-decoration:line-through;}
(7) 段落排版--缩进:p{text-indent:2em;}
     注意:2em的意思就是文字的2倍大小。
(8) 段落排版--行间距(行高):p{line-height:1.5em;}
(9) 段落排版--对齐
     想为块状元素中的文本、图片设置居中样式吗?可以使用text-align样式代码,如下代码可实现文本居中显示。
h1{
    text-align:center;
   // text-align:left;
   // text-align:right;
}

6. CSS盒模型
(1)元素分类
     在CSS中,html中的标签元素大体被分为三种不同的类型:块状元素、内联元素(又叫行内元素)和内联块状元素。
常用的块状元素有:
     <div>、<p>、<h1>...<h6>、<ol>、<ul>、<dl>、<table>、<address>、<blockquote> 、<form>
常用的内联元素有:
     <a>、<span>、<br>、<i>、<em>、<strong>、<label>、<q>、<var>、<cite>、<code>
常用的内联块状元素有:
     <img>、<input>
(2) 盒模型--边框
     盒子模型的边框就是围绕着内容及补白的线,这条线你可以设置它的粗细、样式和颜色(边框三个属性)。
     如下面代码为 div 来设置边框粗细为 2px、样式为实心的、颜色为红色的边框:
     上面是 border 代码的缩写形式,可以分开写:
div{
    border-width:2px;
    border-style:solid;
    border-color:red;
}
注意:
     border-style(边框样式)常见样式有: dashed(虚线)| dotted(点线)| solid(实线)。
     border-color(边框颜色)中的颜色可设置为十六进制颜色,如: border-color:#888;
     border-width(边框宽度)中的宽度也可以设置为: thin | medium | thick(但不是很常用),最常还是用象素
(3) 盒模型--填充
     元素内容与边框之间是可以设置距离的,称之为“填充”。填充也可分为上、右、下、左(顺时针)。如下代码:div{padding:20px 10px 15px 30px;}
     顺序一定不要搞混。可以分开写上面代码:
div{
   padding-top:20px;
   padding-right:10px;
   padding-bottom:15px;
   padding-left:30px;
}
     如果上、右、下、左的填充都为10px;可以这么写:div{padding:10px;}
     如果上下填充一样为10px,左右一样为20px,可以这么写:div{padding:10px 20px;}
(4) 盒模型--边界
     元素与其它元素之间的距离可以使用边界(margin)来设置。边界也是可分为上、右、下、左。如下代码:div{margin:20px 10px 15px 30px;}
     也可以分开写:
div{
   margin-top:20px;
   margin-right:10px;
   margin-bottom:15px;
   margin-left:30px;
}
     如果上右下左的边界都为10px;可以这么写:div{ margin:10px;}
     如果上下边界一样为10px,左右一样为20px,可以这么写:div{ margin:10px 20px;}
     总结一下:padding和margin的区别,padding在边框里,margin在边框外。

7.CSS布局模型
     CSS包含3种基本的布局模型,用英文概括为:Flow、Layer 和 Float。
     在网页中,元素有三种布局模型: 流动模型(Flow) , 浮动模型 (Float) , 层模型(Layer)。
(1) 流动模型
     流动(Flow)是默认的网页布局模式。也就是说网页在默认状态下的 HTML 网页元素都是根据流动模型来分布网页内容的。
(2) 浮动模型
     块状元素这么霸道都是独占一行,如果现在我们想让两个块状元素并排显示,怎么办呢?不要着急,设置元素浮动就可以实现这一愿望。
     任何元素在默认情况下是不能浮动的,但可以用 CSS 定义为浮动,如 div、p、table、img 等元素都可以被定义为浮动。如下代码可以实现两个 div 元素一行显示。
div{
    width:200px;
    height:200px;
    border:2px red solid;
    float:left;
}
<div id="div1"></div>
<div id="div2"></div>
(3) 层模型?
     层布局模型就像是图像软件PhotoShop中非常流行的图层编辑功能一样,每个图层能够精确定位操作,但在网页设计领域,由于网页大小的活动性,层布局没能受到热捧。但是在网页上局部使用层布局还是有其方便之处的。下面我们来学习一下html中的层布局。
     如何让html元素在网页中精确定位,就像图像软件PhotoShop中的图层一样可以对每个图层能够精确定位操作。CSS定义了一组定位(positioning)属性来支持层布局模型。
     层模型有三种形式: 绝对定位(position: absolute) , 相对定位(position: relative) , 固定定位(position: fixed).

8. CSS代码缩写,占用更少的带宽
(1) 盒模型代码简写
     在讲盒模型时外边距(margin)、内边距(padding)和边框(border)设置上下左右四个方向的边距是按照顺时针方向设置的:上右下左。具体应用在margin和padding的例子如下:margin:10px 15px 12px 14px;/*上设置为10px、右设置为15px、下设置为12px、左设置为14px*/
通常有下面三种缩写方法:
     如果top、right、bottom、left的值相同,如下面代码:
margin:10px 10px 10px 10px;
可缩写为:
margin:10px;
     如果top和bottom值相同、left和 right的值相同,如下面代码:
margin:10px 20px 10px 20px;
可缩写为:
margin:10px 20px;
     如果left和right的值相同,如下面代码:
margin:10px 20px 30px 20px;
可缩写为:
margin:10px 20px 30px;
      注意:padding、border的缩写方法和margin是一致的。
(2) 颜色值缩写
     关于颜色的css样式也是可以缩写的,当你设置的颜色是16进制的色彩值时,如果每两位的值相同,可以缩写一半。
例子1:
p{color:#000000;}
可以缩写为:
p{color: #000;}
例子2:
p{color: #336699;}
可以缩写为:
p{color: #369;}
(3) 字体缩写
     网页中的字体css样式代码也有他自己的缩写方式,下面是给网页设置字体的代码:
body{
    font-style:italic;
    font-variant:small-caps;
    font-weight:bold;
    font-size:12px;
    line-height:1.5em;
    font-family:"宋体",sans-serif;
}
      这么多行的代码其实可以缩写为一句:
body{
    font:italic  small-caps  bold  12px/1.5em  "宋体",sans-serif;
}
     注意:
     ① 使用这一简写方式你至少要指定 font-size 和 font-family 属性,其他的属性(如 font-weight、font-style、font-variant、line-height)如未指定将自动使用默认值。
     ② 在缩写时 font-size 与 line-height 中间要加入“/”斜扛。
     ③ 一般情况下因为对于中文网站,英文还是比较少的,所以下面缩写代码比较常用:
body{
    font:12px/1.5em  "宋体",sans-serif;
}
     只是有字号、行间距、中文字体、英文字体设置。

9. 单位和值
(1) 颜色值
       在网页中的颜色设置是非常重要,有字体颜色(color)、背景颜色(background-color)、边框颜色(border)等,设置颜色的方法也有很多种:
    ① 英文命令颜色p{color:red;}
    ② RGB颜色
     这个与 photoshop 中的 RGB 颜色是一致的,由 R(red)、G(green)、B(blue) 三种颜色的比例来配色。 如: p{color:rgb(133,45,200);}
     每一项的值可以是 0~255 之间的整数,也可以是 0%~100% 的百分数。如: p{color:rgb(20%,33%,25%);}
    ③ 十六进制颜色
     这种颜色设置方法是现在比较普遍使用的方法,其原理其实也是 RGB 设置,但是其每一项的值由 0-255 变成了十六进制 00-ff。 如: p{color:#00ffff;}

     配色表:

(2) 长度值
     长度单位总结一下,目前比较常用到px(像素)、em、% 百分比,要注意其实这三种单位都是相对单位。
① 像素
     像素为什么是相对单位呢?因为像素指的是显示器上的小点(CSS规范中假设“90像素=1英寸”)。实际情况是浏览器会使用显示器的实际像素值有关,在目前大多数的设计者都倾向于使用像素(px)作为单位。
② em
     就是本元素给定字体的 font-size 值,如果元素的 font-size 为 14px ,那么 1em = 14px;如果 font-size 为 18px,那么 1em = 18px。如下代码:p{font-size:12px;text-indent:2em;}
     上面代码就是可以实现段落首行缩进 24px(也就是两个字体大小的距离)。
③ 百分比:p{font-size:12px;line-height:130%}
     设置行高(行间距)为字体的130%(12 * 1.3 = 15.6px)。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员学习圈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值