前端之CSS基础

前端之CSS

1、 CSS

CSS定义如何显示HTML元素。

当浏览器读到一个样式表,他就会按照这个样式表来对文档进行格式化(渲染)。

3、CSS语法

1)CSS实例

每个CSS由两部分组成: 选择器和声明。声明包括属性和属性值,每个声明用分号结束。

)CSS注释

/*注释*/

3、CSS的几种引入方式

1)行内样式

行内式是在标记的style属性中设定CSS样式。不推荐大规模使用

<p style="color:red">Hello word.</q>

2)内部样式

嵌入式试讲CSS样式集中卸载网页的<head></head>表签对的<style></style> 表钱对中。

格式:

<head>
  <meta charset="UTF-8">
  <title>Title</title>
   <style>
     p{ background-color: 2b99ff; }
   </style>
</head>

3) 外部样式

外部样式就是将CSS写在一个单独的文件中,然后在页面进行引入即可。推荐使用方法。

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

4、CSS选择器

1)基本选择器

元素选择器

p {color: "red";}

ID选择器

#i1 { background-color: red; }

类选择器

.c1 { font-size: 14px; }
p.c1 {
color: red;
}

注意: 样式类名不要使用数字开头(有的浏览器不认)。

标签中的class 属性如果有多个,要用空格分开

通用选择器

 p { color: white; }

后代选择器

li内部的a标签设置字体颜色

li a { color: green; }

 

儿子选择器

选择所有父级是 <div> 元素的 <p> 元素

div>p { font-family: "Arial Black", arial-black, cursive; }

 

毗邻选择器

选择所有紧接着<div>元素之后的<p>元素

div+p { margin: 5px; }

 

兄弟选择器

i1后面所有的兄弟p标签

#i1~p { border: 2px solid royalblue; }

 

属性选择器

用于选取带有指定属性的元素

p[title] { color: red; }  

用于选取带有指定属性和值的元素

p[title="213"] { color: green; }

 

分组选择器

当多个元素的样式相同的时候,我们没有必要重复地为每个元素都设置样式,我们可以通过在多个选择器之间使用逗号分隔的分组选择器来统一设置元素样式。

div, p { color: red; }

 

伪类选择器

/* 未访问的链接 */
a:link { color: #FF0000 }
/* 鼠标移动到链接上 */
a:hover { color: #FF00FF }
/* 选定的链接 */
a:active { color: #0000FF }
/* 已访问的链接 */
a:visited { color: #00FF00 }
/*input输入框获取焦点时样式*/
input:focus { outline: none; background-color: #eee; }

 

伪类元素选择器

first-letter
p:first-letter { font-size: 48px; color: red; }

before p:before { content:"*"; color:red; }

after   p:after { content:"[?]"; color:blue; }

 

4 选择器的优先级

内联样式 》id选择器》类选择器》 元素选择器

还可以通过添加 !important方式来强制让样式生效,如果过多的使用!important会使样式文件混乱不易维护。

万不得已可以使用!important

5、CSS属性相关

1)宽和高

width属性可以为元素设置宽度。

height属性可以为元素高度。

块级标签才能设置宽度,内联标签的宽度由内容来决定。

2)字体属性

文字字体

font-family可以把多个字体名称称作一个“回退”系统来保存,如果浏览器不支持第一个字体,则会尝试下一个。浏览器会使它可识别的第一个值。

简单实例:

body { font-family: "Microsoft Yahei", "微软雅黑", "Arial", sans-serif }

 

字体大小

p{font-size:设置字体的大小px;}

如果设置inherit表示继承父元素的字体大小值。

字重(粗细)

font-weight用来设置字体的字重。

描述
normal 标准粗细
bold 粗体
bolder 更粗
lighter 更细
100~900 设置具体粗细,400等于标准粗细(normal)700相当于bolder
inherit 继承父元素字体的粗细值,默认值

文本颜色

颜色属性被用来设置文字的 颜色。

颜色是通过CSS最经常的指定:

  • 十六进制- 如:#FF0000

  • 一个RGB值 - 如 RGB(255,255,255)

  • 颜色名称 - 如red

还有rgba(255,0,0.3),第四个值为alpha,指定了色彩的透明度/不透明度,他的范围为0-1.0之间。

3)文字属性

文字对齐

text-align 属性规定元素中的文本的水平对齐方式。

描述
left 左边对齐,默认值
right 右对齐
center 居中对齐
justify 两端对齐

文字装饰

text-decoration 属性用来给文字添加特殊效果。

描述
none 默认。定义标准文本
underline 定义文本下的一条线
overline 定义文本上的一条线
line-through 定义穿过文本下的一条线
inherit 继承父元素的text-decoration属性元素

常用的为去掉啊标签默认的自划线:

a{text-decoration:none;}

首行缩进

将段落的第一行缩进32像素

p{text-indent:32px;}
去除li标签的样式
list-style:none;

文字之间的距离

将文字的间距调整为5像素

p{letter-spacing: 5px;}

4)背景属性

/*背景颜色*/
background-color: red; /*背景图片*/ background-image: url('1.jpg');
/*背景重复
repeat(默认):背景图片平铺排满整个网页
repeat-x:背景图片只在水平方向上平铺
repeat-y:背景图片只在垂直方向上平铺
no-repeat:背景图片不平铺*/
background-repeat: no-repeat;
/*背景位置*/
background-position: left top;
/*background-position: 200px 200px;*/

简写:

background:背景颜色 url('背景图片')no-repeat left top;

使用背景图片的一个常见案列就是很多网站会把很多小图标放在一张图片上,然后根据位置区去显示图片。减少频繁的图片请求。

5)边框

边框属性

  • border-width

  • border-style

  • border-color

#i1 { border-width: 2px; border-style: solid; border-color: red; }

简写:#li {border-width:2px solid red;}

边框样式

描述
none 无边框
dotted 点状虚线边框
dashed 举行虚线边框
solid 实线边框

6)border-radius

用这个属性能实现圆角边框的效果。

将border-radius设置为长或高的一般即可得到一个圆形。

7)display属性

用于控制HTML元素的显示效果

意义
display:"none" HTML文档中元素存在,但是在浏览器中不显示。一般用于配合JavaScript代码使用
display:"block" 意义
display:"inline" 按行内元素显示,此时在设置原色的width,height、margin-top、margin-bottom和float属性都不会有什么影响
display:"inline-block" 使元素同时具有行内元素和块级元素的特点

display:"none"与visibility:hidden的区别:

visibility:hidden: 可以隐藏某个元素,但隐藏的元素仍需占用与未隐藏之前一样的空间。也就是说,该元素虽然被隐藏了,但仍然会影响布局。

display:none: 可以隐藏某个元素,且隐藏的元素不会占用任何空间。也就是说,该元素不但被隐藏了,而且该元素原本占用的空间也会从页面布局中消失。

8)CSS盒子模型

  • margin :用于控制元素与元素之间的距离;margin的最基本的作用就是控制元素周围空间的间隔,从视觉角度上达到相互隔开的目的。

  • padding: 用于控制内容与边框之间的距离

  • Border(边框): 围绕在内边距和内容外的边框。

  • Content(内容): 盒子的内容,显示文本和图像

9)margin外边距

.margin-test { margin-top:5px; margin-right:10px; margin-bottom:15px; margin-left:20px; }

简写: .margin-test{margin:5px 10px 15px 20px;}

顺序:上右下左

常见居中

.mycenter{margin:0 auto;}

10) 内部填充

.padding-test { padding-top: 5px; padding-right: 10px; padding-bottom: 15px; padding-left: 20px; }


简写:
.padding-test { padding: 5px 10px 15px 20px; }

顺序:上右下左

补充padding的常用简写方式:

  • 提供一个,用于四边

  • 提供两个,第一个用于上下,第二个用于左右

  • 如果提供三个,第一个用于上,第二个用于左右,第三个用于下;

  • 提供四个参数值:将按照上右下左的顺序作用于四边

11) flat

在CSS中,任何元素都可以浮动

浮动元素会生辰一个块级框,而不论它本身是何种元素。

关于浮动的两个特点:

  • 浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或者另一个边框为止。

  • 由于浮动框不在稳当的普通流中,所以文档的普通流中的边框表现得就像浮动边框不存在一样。

三中取值

left:向左浮动

right: 向右浮动

none:默认值,不浮动

12)clear

clear属性规定元素的那一侧不允许其他浮动元素。

描述
left 在左侧不允许浮动元素
right 在右侧不允许浮动元素
both 在左右两侧均不允许浮动元素
none 默认值。允许浮动元素出现在两侧
inherit 规定应该从父元素继承clear属性的值

注意:clear属性只会对自身起作用,而不会影响其他元素。

清除浮动

清除浮动的副作用(父标签塌陷问题)

主要有三种方式:

  • 固定高度

  • 伪元素去除法

  • overflow:hidden

伪元素去除法:

.clearfix:after { content: ""; display: block; clear: both; }

 

13)overflow溢出属性

描述
visible 默认值,内容不会被修剪,会呈现在元素框之外
hidden 内容会被修剪,并且其余内容是不可见得
scroll 内容会被修剪,但是在浏览器会显示滚动条一遍查看其余的内容
auto 如果内容被修剪,则浏览器会显示滚动条以便查看其余内容
inherit 规定应该从父元素继承overflow属性的值
  • overflow(水平和垂直均设置)

  • overflow-x(设置水平方向)

  • overflow-y(设置垂直方向)

max-width最大宽度与min-width最小宽度案例小结 我们设置两个盒子一个“divcss5-min-width”设置对象里img图片最小宽度为200px,而实际图片只有165px,所以图片被拉伸到200px;一个“divcss5-max-width”设置对象里img图片最大宽度为200px限制,而实际对象里图片宽度是375px,这个时候我们设置了此图片最大宽度为200px,所以图片被CSS max-height缩小到200px

圆头像实例:
<!DOCTYPE HTML>
<html>
<head>
 <meta charset="UTF-8">
 <meta http-equiv="x-ua-compatible" content="IE=edge">
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <title>圆形的头像示例</title>
 <style>
  * {
     margin: 0;
     padding: 0;
     background-color: #eeeeee;
  }
   .header-img {
     width: 150px;
     height: 150px;
     border: 3px solid white;
     border-radius: 50%;
     overflow: hidden;
  }
   .header-img>img {
     width: 100%;
  }
 </style>
</head>
<body>

<div class="header-img">
 <img src="https://pic.cnblogs.com/avatar/1342004/20180304191536.png" alt="">
</div>

</body>
</html>

 

14) 定位(position)

static

static 默认值,无定位,不能当做绝对定位的参照物,并且设置标签对象的left、top等值是不起作用的。

relative(相对定位)

相对定位是相对于该元素在文档流中的原始位置,即以自己原始位置为参照物。有趣的是,即使设定了元素的相对定位以及偏移值,元素还占有着原来的位置,即占据文档流空间。对象遵循正常文档流,但将依据top, right,bottom,left等属性在正常交流文档流中偏移位置。而其层叠通过z-index属性定义。

注意: position:relative的一个主要用法:方便绝对顶屋恩元素找到参照物。

absolute(绝对定位)

定义: 设置为绝对定位的元素框从文档流完全删除,并相对与最近的已定位祖先元素定位,如果元素没有已经定位的祖先元素,name他的位置相对与最初的包含块(body元素)。元素原先在真长文档流所占的空间会关闭,就好像该元素原来不存在一样,元素定位后生成一个块级框,而不论原来他在正常流中产生何种类型的框。

重点: 如果父级设置了position属性,例如position:relative; 那么子元素就会以父级的左上角为原点进行定位。这样就结决了自适应网站的标签偏离问题,即父级为自适应,那我子元素就设置position:absolute;父元素设置position:relative;然后Top、Right、Bottom、Left等属性尽享绝对定位,而其层叠通过z-index属性定义。

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>绝对定位</title>
   <style>
       .c1 {
           height: 100px;
           width: 100px;
           background-color: red;
           float: left;
      }
       .c2 {
           height: 50px;
           width: 50px;
           background-color: #ff6700;
           float: right;
           margin-right: 400px;
           position: relative;

      }
       .c3 {
           height: 200px;
           width: 200px;
           background-color: green;
           position: absolute;
           top: 50px;
      }
   </style>
</head>
<body>
<div class="c1"></div>
<div class="c2">
   <div class="c3"></div>
</div>

</body>
</html>

fixed (固定)

fixed:对象脱离正常文档流,使用top,right,bottom,left等属性以窗口为参考点进行定位,出现滚动条时,对象不会随着滚动。而其通过层叠z-index属性定义。

注意:一个元素若设置了position:absolute|fixed;则该元素不能设置float。因为这是两个不同的流,一个是浮动流,另一个是定位流。但是relative却可以。因为他原本所占用的空间仍然占据文档流。

在理论上,被设置为fixed的元素会被定位于浏览器窗口的一个指定坐标,不论窗口是否滚动,他都会固定在这个位置。

实例:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta http-equiv="x-ua-compatible" content="IE=edge">
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <title>返回顶部示例</title>
 <style>
  * {
     margin: 0;
  }

   .d1 {
     height: 1000px;
     background-color: #eeee;
  }

   .scrollTop {
     background-color: darkgrey;
     padding: 10px;
     text-align: center;
     position: fixed;
     right: 10px;
     bottom: 20px;
  }
 </style>
</head>
<body>
<div class="d1">111</div>
<div class="scrollTop">返回顶部</div>
</body>
</html>

是否脱离文档流

相对定位:
<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>
   <meta name="viewport" content="width=device-width, initial-scale=1">
   <style>
       .c1 {
            height: 50px;
           width: 100px;
           background-color: dodgerblue;
      }
       .c2 {
            height: 100px;
           width: 50px;
           background-color: orange;
           position: relative;
           left: 100px;
      }
   </style>
</head>
<body>
<div class="c1"></div>
<div class="c2"></div>
<div style="height: 100px;width: 200px;background-color: black"></div>
</body>
</html>
绝对定位:
<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>
   <meta name="viewport" content="width=device-width, initial-scale=1">
   <style>
       .c1 {
           height: 50px;
           width: 100px;
           background-color: red;
           position: relative;
      }
       .c2 {
           height: 50px;
           width: 200px;
           background-color: green;
           position: absolute;
           left: 50px;
      }
   </style>
</head>
<body>
<div class="c1">购物车
   <div class="c2">空空如也~</div>
   <div style="height: 50px;width: 100px;background-color: deeppink"></div>
</div>

</body>
</html>
固定位置:
<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>
   <meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<div class="c1" style="height: 50px;width: 500px;background-color: black"></div>
<div class="c2" style="height: 50px;width: 100px;background-color: deeppink;position: fixed;right: 10px;bottom: 20px"></div>
<div class="c3" style="height: 10px;width: 100px;background-color: green"></div>

</body>
</html>

脱离文档流:

绝对定位

固定定位

不脱离文档流:

相对定位

15)z-index

i2{z-index:999;}

设置对象的层叠顺序。

  1. z-index值表示谁压着谁,数值打的压盖这数值小的,

  2. 只有定位了的元素,才能有z-index,也就是说不管相对定位,绝对定位,固定定位,都可以使用z-index,而浮动元素不能使用z-index

  3. z-index值没有单位,就是一个正整数,默认的z-index值为0如果大家都没有z-index值,或者z-index值一样,name谁卸载HTML后面,谁在上面压着别人,定位了元素,用元压住没有定位的元素。

  4. 从父现象:父亲怂了,儿子在牛逼都没用。

自定义模态框:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta http-equiv="x-ua-compatible" content="IE=edge">
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <title>自定义模态框</title>
 <style>
   .cover {
     background-color: rgba(0,0,0,0.65);
     position: fixed;
     top: 0;
     right: 0;
     bottom: 0;
     left: 0;
     z-index: 998;
  }

   .modal {
     background-color: white;
     position: fixed;
     width: 600px;
     height: 400px;
     left: 50%;
     top: 50%;
     margin: -200px 0 0 -300px;
     z-index: 1000;
  }
 </style>
</head>
<body>

<div class="cover"></div>
<div class="modal"></div>
</body>
</html>

16) opacity

用来定义透明效果,取值范围0-1,0完全透明,1完全不透明

6综合示例》顶部导航菜单

示例:

<!DOCTYPE HTML>
<html>
<head>
 <meta charset="UTF-8">
 <meta http-equiv="x-ua-compatible" content="IE=edge">
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <title>li标签的float示例</title>
 <style>
   /*清除浏览器默认外边距和内填充*/
  * {
     margin: 0;
     padding: 0;
  }
   a {
     text-decoration: none; /*去除a标签默认的下划线*/
  }

   .nav {
     background-color: black;
     height: 40px;
     width: 100%;
     position: fixed;
     top: 0;
  }

   ul {
     list-style-type: none; /*删除列表默认的圆点样式*/
     margin: 0; /*删除列表默认的外边距*/
     padding: 0; /*删除列表默认的内填充*/
  }
   /*li元素向左浮动*/
   li {
     float: left;
  }

   li > a {
     display: block; /*让链接显示为块级标签*/
     padding: 0 15px; /*设置左右各15像素的填充*/
     color: #b0b0b0; /*设置字体颜色*/
     line-height: 40px; /*设置行高*/
  }
   /*鼠标移上去颜色变白*/
   li > a:hover {
     color: #fff;
  }

   /*清除浮动 解决父级塌陷问题*/
   .clearfix:after {
     content: "";
     display: block;
     clear: both;
  }
 </style>
</head>
<body>
<!-- 顶部导航栏 开始 -->
<div class="nav">
 <ul class="clearfix">
   <li><a href="">玉米商城</a></li>
   <li><a href="">MIUI</a></li>
   <li><a href="">ioT</a></li>
   <li><a href="">云服务</a></li>
   <li><a href="">水滴</a></li>
   <li><a href="">金融</a></li>
   <li><a href="">优品</a></li>
 </ul>
</div>
<!-- 顶部导航栏 结束 -->
</body>
</html>

 

猜你喜欢

转载自www.cnblogs.com/zfb123-/p/11689839.html