CSS
文章目录
简介

p
{
    color:red;
    text-align:center;
}
 
不要在属性值与单位之间留有空格
CSS注释以 /* 开始, 以 / 结束
id选择器
#para1
{
    text-align:center;
    color:red;
}
 
id和class不要以数字开头
class选择器
.center {text-align:center;}
 
指定特定的HTML元素使用class。
p.center {text-align:center;}
 
CSS创建
插入样式表的方法有三种:
- 外部样式表(External style sheet)
 - 内部样式表(Internal style sheet)
 - 内联样式(Inline style)
 
外部样式表
<head>
<link rel="stylesheet" type="text/css" href="mystyle.css">
</head>
 
内部样式表
单个文档需要特殊的样式时,就应该使用内部样式表。
<head>
<style>
hr {color:sienna;}
p {margin-left:20px;}
body {background-image:url("images/back40.gif");}
</style>
</head>
 
内联样式
在相关的标签内使用样式(style)属性。
<p style="color:sienna;margin-left:20px">这是一个段落。</p>
 
多重样式优先级
(内联样式)Inline style > (内部样式)Internal style sheet >(外部样式)External style sheet > 浏览器默认样式
如果外部样式放在内部样式的后面,则外部样式将覆盖内部样式。
背景
背景颜色
body {background-color:#b0c4de;}
 
背景图像
body {background-image:url('paper.gif');}
 
不同的图片设置多个不同的属性
#example1 {
    background: url(img_flwr.gif) right bottom no-repeat, url(paper.gif) left top repeat;
}
 
平铺与定位
body
{
background-image:url('img_tree.png');
background-repeat:no-repeat;
background-position:right top;
}
 
背景大小
div
{
    background:url(img_flwr.gif);
    background-size:80px 60px;
    background-repeat:no-repeat;
}
div
{
    background:url(img_flwr.gif);
    background-size:100% 100%;
    background-repeat:no-repeat;
}
 
指定背景图像的定位区域。
div
{
    background:url(img_flwr.gif);
    background-repeat:no-repeat;
    background-size:100% 100%;
    background-origin:content-box;
}
 

背景剪裁属性是从指定位置开始绘制。
#example1 { 
    border: 10px dotted black; 
    padding: 35px; 
    background: yellow; 
    background-clip: content-box; 
}
 
线性渐变
#grad {
  height: 200px;
  background-image: linear-gradient(to right, red , yellow);
}
#grad {
  height: 200px;
  background-image: linear-gradient(to bottom right, red, yellow);
}
#grad {
  /* 多颜色 */
  background-image: linear-gradient(to right, red,orange,yellow,green,blue,indigo,violet);
}
/*带有指定的角度的线性渐变*/
#grad {
  background-image: linear-gradient(-90deg, red, yellow);
}
/*使用透明度*/
#grad {
  background-image: linear-gradient(to right, rgba(255,0,0,0), rgba(255,0,0,1));
}
#grad {
  /* 重复的线性渐变 */
  background-image: repeating-linear-gradient(red, yellow 10%, green 20%);
}
 
径向渐变
#grad {
  background-image: radial-gradient(red, yellow, green);
}
/*不均匀渐变*/
#grad {
  background-image: radial-gradient(red 5%, yellow 15%, green 60%);
}
/*特定形状*/
#grad {
  background-image: radial-gradient(circle, red, yellow, green);
}
/*不同尺寸大小关键字*/
#grad1 {
  background-image: radial-gradient(closest-side at 60% 55%, red, yellow, black);
}
 
合并属性
body {background:#ffffff url('img_tree.png') no-repeat right top;}
 
当使用简写属性时,属性值的顺序为::
- background-color
 - background-image
 - background-repeat
 - background-attachment
 - background-position
 
文本
文本颜色
body {color:red;}
h1 {color:#00ff00;}
h2 {color:rgb(255,0,0);}
 
对齐方式
h1 {text-align:center;}
p.date {text-align:right;}
p.main {text-align:justify;}
 
修饰
h1 {text-decoration:overline;}
h2 {text-decoration:line-through;}
h3 {text-decoration:underline;}
a {text-decoration:none;}
 
文本转换
p.uppercase {text-transform:uppercase;}
p.lowercase {text-transform:lowercase;}
p.capitalize {text-transform:capitalize;}
 
文本缩进
p {text-indent:50px;}
 
字体
字体系列
p{font-family:"Times New Roman", Times, serif;}
 
如果浏览器不支持第一种字体,他将尝试下一种字体。
字体样式
p.normal {font-style:normal;}
p.italic {font-style:italic;}
p.oblique {font-style:oblique;}  /*倾斜*/
 
字体大小
h1 {font-size:40px;}
 
为了避免Internet Explorer 中无法调整文本的问题,许多开发者使用 em 单位代替像素。
1 {font-size:2.5em;} /* 40px/16=2.5em */
 
1em的默认大小是16px。
百分比
body {font-size:100%;}
 
链接
不同链接状态样式
a:link {color:#000000;}      /* 未访问链接*/
a:visited {color:#00FF00;}  /* 已访问链接 */
a:hover {color:#FF00FF;}  /* 鼠标移动到链接上 */
a:active {color:#0000FF;}  /* 鼠标点击时 */
 
- a:hover 必须跟在 a:link 和 a:visited后面
 - a:active 必须跟在 a:hover后面
 
列表
ul.a {list-style-type: circle;}
ul.b {list-style-type: square;}
 
ol.c {list-style-type: upper-roman;}
ol.d {list-style-type: lower-alpha;}
 
list-style-type:none 属性可以用于移除小标记。
指定列表项标记的图像
ul
{
    list-style-image: url('sqpurple.gif');
}
 
简写属性
ul
{
    list-style: square url("sqpurple.gif");
}
 
- list-style-type
 - list-style-position
 - list-style-image
 
表格
边框
table
{
    border-collapse:collapse;
}
table,th, td
{
    border: 1px solid black;
}
 
宽度、高度
table 
{
    width:100%;
}
th
{
    height:50px;
}
 
文字对齐
td
{
    text-align:right;
}
td
{
    height:50px;
    vertical-align:bottom;
}
 
表格填充
控制边框和表格内容之间的间距
td
{
    padding:15px;
}
 
表格颜色
table, td, th
{
    border:1px solid green;
}
th
{
    background-color:green;
    color:white;
}
 
元素显示模式
元素显示模式,即元素(标签)以什么方式显示,自己占一行或者一行有多个。
块元素
比如 <h1>~<h6>、<p>、<ul>、<ol>、<li>、<div>等。
特点:
- 独占一行
 - 高度、宽度、内外边距都可控制
 - 宽度默认为容器的100%
 - 是一个容器或盒子,里面可以放行内或块级元素(文字类标签内不能放块级元素)。
 
行内元素
比如 <a> <strong> <del> <span>等
特点:
- 一行多个
 - 高、宽度设置无效
 - 默认宽度为内容宽度
 - 只能容纳文本或其他行内元素( 链接内可以放块级元素,但最好转换)
 
行内块元素
比如<img/> <input /> <td>
特点:
- 一行多个但之间有空隙
 - 默认宽度为内容宽度
 - 高度、宽度、内外边距都可控制
 
显示模式的转换
display:block;   /*转换为块元素*/
display:inline;  /*转换为行内元素*/
display:inline;  /*转换为行内块元素*/
 
盒子模型

- Margin(外边距) - 清除边框外的区域,外边距是透明的。
 - Border(边框) - 围绕在内边距和内容外的边框。
 - Padding(内边距) - 清除内容周围的区域,内边距是透明的。
 - Content(内容) - 盒子的内容,显示文本和图像。
 
边框
border-style

边框宽度
可以指定长度值,或者使用 3 个关键字之一,它们分别是 thick 、medium(默认值) 和 thin。
单独设置各边
p
{
    border-top-style:dotted;
    border-right-style:solid;
    border-bottom-style:dotted;
    border-left-style:solid;
}
 
简写属性
border:5px solid red;
 
- border-width
 - border-style (required)
 - border-color
 
CSS3
圆角边框:
div
{
border:2px solid;
border-radius:25px;
}
 
盒阴影
div
{
box-shadow: 10px 10px 5px #888888;
}
 
边界图片
div
{
border-image:url(border.png) 30 30 round;
-webkit-border-image:url(border.png) 30 30 round; /* Safari 5 and older */
-o-border-image:url(border.png) 30 30 round; /* Opera */
}
 
轮廓

 
外边距

填充

分组与嵌套
每个选择器用逗号分隔。
h1,h2,p
{
    color:green;
}
 
嵌套
p
{
    color:blue;
    text-align:center;
}
.marked
{
    background-color:red;
}
.marked p
{
    color:white;
}
p.marked{
    text-decoration:underline;
}
 
显示
隐藏一个元素可以通过把display属性设置为"none",或把visibility属性设置为"hidden"。
visibility:hidden可以隐藏某个元素,但占用与未隐藏之前一样的空间。
display:none可以隐藏某个元素,且隐藏的元素不会占用任何空间。
浮动
让多个块级盒子一行无缝排列,经常用于横向排列。
如果图像是右浮动,下面的文本流将环绕在它左边:
img
{
    float:right;
}
 
特点:
- 脱离标准流(脱标),浮在上方
 - 不在保留原先位置
 - 与其他浮动的盒子一行内显示并且顶端对齐排列,父级宽度不够则另起一行
 - 有行内块元素特征
 
一般策略:用标准流的父元素排列上下位置,内部子元素采取浮动排列左右位置。
理论上一个盒子浮动,则兄弟盒子也应浮动。
浮动影响后方的标准流,前面的不影响。
清除浮动:
清除浮动后,父级就有了高度,不会影响下方标准流。
1、额外标签法:
新增一个块级元素,并使用:
div
{
    clear:both;
}
 
2、父级添加overflow属性,设置为hidden、auto或scroll
定位
让盒子自由移动位置或者固定到屏幕中的某个位置,且能压住其他盒子。
定位=定位模式+边偏移
static 定位(静态定位)
即没有定位,遵循正常的文档流对象。
静态定位的元素不会受到 top, bottom, left, right影响(即没有边偏移)。
relative 定位(相对定位)
相对其正常位置。
还保留原来位置,不脱标。
h2.pos_left
{
    position:relative;
    left:-20px;
}
h2.pos_right
{
    position:relative;
    left:20px;
}
 
absolute 定位(绝对定位)
绝对定位的元素的位置相对于最近的已定位父元素
如果元素没有已定位的父元素,那么它的位置相对于:
absolute 定位使元素的位置与文档流无关,因此不占据空间。
绝对定位的盒子不能通过margin:0 auto 水平居中
居中方式
left: 50%
margin-left: -100       左移自身宽度的一半
 
子绝父相:子级是绝对定位的话,父级要用相对定位。
- 子级绝对定位,不占位置,可放到父盒子的任意位置。
 - 父盒子需要加定位来限制子盒子,且需要占有位置,因此为相对定位。
 
fixed 定位(固定定位)
元素的位置相对于浏览器窗口是固定位置,与父元素无关。
即使窗口是滚动的它也不会移动
Fixed定位使元素的位置与文档流无关,因此不占据空间。
可以看作特殊的绝对定位。
sticky 定位
在 position:relative 与 position:fixed 定位之间切换。
以浏览器可视窗口为参照(固定定位),占有原来位置(相对定位)。
在跨越特定阈值前为相对定位,之后为固定定位。
指定 top, right, bottom 或 left 四个阈值其中之一,才可使粘性定位生效。否则其行为与相对定位相同。
div.sticky {
    position: -webkit-sticky; /* Safari */
    position: sticky;
    top: 0;
    background-color: green;
    border: 2px solid #4CAF50;
}
 
元素的堆叠
img
{
    position:absolute;
    left:0px;
    top:0px;
    z-index:-1;        /*z轴控制盒子的前后次序*/
}
 
具有更高堆叠顺序的元素总是在前面。
行内元素添加绝对定位后,可以设置高度、宽度
块级元素添加绝对定位后,默认为内容大小
绝对定位会压住下面标准流的所有内容,但浮动不会压住盒子中的文字、图片。
Overflow
控制内容溢出元素框时显示的方式。

对齐
元素居中对齐
.center {
    margin: auto;
    width: 50%;
    border: 3px solid green;
    padding: 10px;
}
 
将两边的空外边距平均分配。
如果没有设置 width 属性(或者设置 100%),居中对齐将不起作用。
文本居中对齐
.center {
    text-align: center;
    border: 3px solid green;
}
 
图片居中对齐
使用 margin: auto; 并将它放到 块 元素中
左右对齐:position
body {
    margin: 0;
    padding: 0;
}
 
.container {
    position: relative;
    width: 100%;
}
 
.right {
    position: absolute;
    right: 0px;
    width: 300px;
    background-color: #b0e0e6;
}
 
当使用 position 来对齐元素时, 通常 元素会设置 margin 和 padding 。 这样可以避免在不同的浏览器中出现可见的差异。
当使用 position 属性时,请始终设置 !DOCTYPE 声明
左右对齐:float
.right {
    float: right;
    width: 300px;
    border: 3px solid #73AD21;
    padding: 10px;
}
 
如果子元素的高度大于父元素,且子元素设置了浮动,那么子元素将溢出,这时候你可以使用 “clearfix(清除浮动)” 来解决该问题。
可以在父元素上添加 overflow: auto; 来解决子元素溢出的问题:
.clearfix {
    overflow: auto;
}
 
当使用 float 属性时,请始终设置 !DOCTYPE 声明
垂直居中:padding
.center {
    padding: 70px 0;
    border: 3px solid green;
}
 
垂直居中:line-height
.center {
    line-height: 200px;
    height: 200px;
    border: 3px solid green;
    text-align: center;
}
 
/* 如果文本有多行,添加以下代码: */
.center p {
    line-height: 1.5;
    display: inline-block;
    vertical-align: middle;
}
 
垂直居中:position和transform
.center { 
    height: 200px;
    position: relative;
    border: 3px solid green; 
}
 
.center p {
    margin: 0;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}
 
组合选择符
后代选择器:选取某元素的后代元素。
div p
{
  background-color:yellow;
}
 
子元素选择器:只能选择作为某元素直接/一级子元素的元素。
div>p
{
  background-color:yellow;
}
 
相邻兄弟选择器:选择紧接在另一元素后的元素,且二者有相同父元素。
div+p
{
  background-color:yellow;
}
 
后续兄弟选择器:选取所有指定元素之后的相邻兄弟元素。
div~p
{
  background-color:yellow;
}
 
伪类
伪类的语法:
selector:pseudo-class {property:value;}
 
CSS类也可以使用伪类:
selector.class:pseudo-class {property:value;}
 
a.red:visited {color:#FF0000;}
 
<a class="red" href="css-syntax.html">CSS 语法</a>
 
伪元素
伪元素的语法:
selector:pseudo-element {property:value;}
 
CSS类也可以使用伪元素:
selector.class:pseudo-element {property:value;}
 
“first-line” 伪元素用于向文本的首行设置特殊样式。
p:first-line 
{
    color:#ff0000;
    font-variant:small-caps;
}
 
“first-letter” 伪元素用于向文本的首字母设置特殊样式:
p:first-letter 
{
    color:#ff0000;
    font-size:xx-large;
}
 
“:before” 伪元素可以在元素的内容前面插入新内容。
h1:before 
{
    content:url(smiley.gif);
}
 
“:after” 伪元素可以在元素的内容之后插入新内容。
h1:after
{
    content:url(smiley.gif);
}
 
导航栏
<ul>
  <li><a href="#home">主页</a></li>
  <li><a href="#news">新闻</a></li>
  <li><a href="#contact">联系</a></li>
  <li><a href="#about">关于</a></li>
</ul>
 
ul {
    list-style-type: none;
    margin: 0;
    padding: 0;
}
/*移除浏览器的默认设置将边距和填充设置为0*/
 
垂直导航栏
a
{
    display:block;
    width:60px;
}
 
ul {
    list-style-type: none;
    margin: 0;
    padding: 0;
    width: 200px;
    background-color: #f1f1f1;
}
 
li a {
    display: block;
    color: #000;
    padding: 8px 16px;
    text-decoration: none;
}
 
/* 鼠标移动到选项上修改背景颜色 */
li a:hover {
    background-color: #555;
    color: white;
}
 
全屏高度的固定导航条
ul {
    list-style-type: none;
    margin: 0;
    padding: 0;
    width: 25%;
    background-color: #f1f1f1;
    height: 100%; /* 全屏高度 */
    position: fixed; 
    overflow: auto; /* 如果导航栏选项多,允许滚动 */
}
 
水平导航栏
内联列表项
li
{
    display:inline;
}
 
浮动列表项
li
{
    float:left;
}
a
{
    display:block;
    width:60px;
}
 
实例
ul {
    list-style-type: none;
    margin: 0;
    padding: 0;
    overflow: hidden;
    background-color: #333;
}
 
li {
    float: left;
}
 
li a {
    display: block;
    color: white;
    text-align: center;
    padding: 14px 16px;
    text-decoration: none;
}
 
/*鼠标移动到选项上修改背景颜色 */
li a:hover {
    background-color: #111;
}
 
固定导航条
ul {
    position: fixed;
    top: 0;
    width: 100%;
}
 
下拉菜单
<div class="dropdown">
  <span>鼠标移动到我这!</span>
  <div class="dropdown-content">
    <p>菜鸟教程</p>
    <p>www.runoob.com</p>
  </div>
</div>
 
<style>
.dropdown {
  position: relative;
  display: inline-block;
}
.dropdown-content {
  display: none;
  position: absolute;
  background-color: #f9f9f9;
  min-width: 160px;
  box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
  padding: 12px 16px;
}
.dropdown:hover .dropdown-content {
  display: block;
}
</style>
 
提示框
<div class="tooltip">鼠标移动到这
  <span class="tooltiptext">提示文本</span>
</div>
 
/* Tooltip 容器 */
.tooltip {
    position: relative;
    display: inline-block;
    border-bottom: 1px dotted black; /* 悬停元素上显示点线 */
}
 
/* Tooltip 文本 */
.tooltip .tooltiptext {
    visibility: hidden;
    width: 120px;
    background-color: black;
    color: #fff;
    text-align: center;
    padding: 5px 0;
    border-radius: 6px;
 
    /* 定位 */
    position: absolute;
    z-index: 1;
}
 
/* 鼠标移动上去后显示提示框 */
.tooltip:hover .tooltiptext {
    visibility: visible;
}
 
图片
透明度
img
{
  opacity:0.4;
  filter:alpha(opacity=40); /* IE8 及其更早版本 */
}
 
属性选择器
[title]
{
    color:blue;
}
 
属性和值选择器
[title=runoob]
{
    border:5px solid green;
}
 
属性和值的选择器 - 多值
[title~=hello] { color:blue; }
[lang|=en] { color:blue; }
 
表单
input[type=text], select {
  width: 100%;
  padding: 12px 20px;
  margin: 8px 0;
  display: inline-block;
  border: 1px solid #ccc;
  border-radius: 4px;
  box-sizing: border-box;
}
 
input[type=submit] {
  width: 100%;
  background-color: #4CAF50;
  color: white;
  padding: 14px 20px;
  margin: 8px 0;
  border: none;
  border-radius: 4px;
  cursor: pointer;
}
 
input[type=submit]:hover {
  background-color: #45a049;
}
 
div {
  border-radius: 5px;
  background-color: #f2f2f2;
  padding: 20px;
}
 
媒体类型
@media规则:允许在相同样式表为不同媒体设置不同的样式。
浏览器屏幕上显示一个 14 像素的 Verdana 字体样式。但是如果页面打印,将是 10 个像素的 Times 字体。
@media screen
{
    p.test {font-family:verdana,sans-serif;font-size:14px;}
}
@media print
{
    p.test {font-family:times,serif;font-size:10px;}
}
@media screen,print
{
    p.test {font-weight:bold;}
}
 

网页布局

响应式网页布局
* {
  box-sizing: border-box;
}
 
body {
  font-family: Arial;
  padding: 10px;
  background: #f1f1f1;
}
 
/* 头部标题 */
.header {
  padding: 30px;
  text-align: center;
  background: white;
}
 
.header h1 {
  font-size: 50px;
}
 
/* 导航条 */
.topnav {
  overflow: hidden;
  background-color: #333;
}
 
/* 导航条链接 */
.topnav a {
  float: left;
  display: block;
  color: #f2f2f2;
  text-align: center;
  padding: 14px 16px;
  text-decoration: none;
}
 
/* 链接颜色修改 */
.topnav a:hover {
  background-color: #ddd;
  color: black;
}
 
/* 创建两列 */
/* Left column */
.leftcolumn {   
  float: left;
  width: 75%;
}
 
/* 右侧栏 */
.rightcolumn {
  float: left;
  width: 25%;
  background-color: #f1f1f1;
  padding-left: 20px;
}
 
/* 图像部分 */
.fakeimg {
  background-color: #aaa;
  width: 100%;
  padding: 20px;
}
 
/* 文章卡片效果 */
.card {
  background-color: white;
  padding: 20px;
  margin-top: 20px;
}
 
/* 列后面清除浮动 */
.row:after {
  content: "";
  display: table;
  clear: both;
}
 
/* 底部 */
.footer {
  padding: 20px;
  text-align: center;
  background: #ddd;
  margin-top: 20px;
}
 
/* 响应式布局 - 屏幕尺寸小于 800px 时,两列布局改为上下布局 */
@media screen and (max-width: 800px) {
  .leftcolumn, .rightcolumn {   
    width: 100%;
    padding: 0;
  }
}
 
/* 响应式布局 -屏幕尺寸小于 400px 时,导航等布局改为上下布局 */
@media screen and (max-width: 400px) {
  .topnav a {
    float: none;
    width: 100%;
  }
}










