WEB前端开发--3(CSS样式)

Posted on 2022-02-18 21:42  鴿  阅读(222)  评论(0编辑  收藏  举报

WEB 前端开发--3(CSS样式)


1. CSS概述

HTML:网页的内容     CSS:内容的样式

CSS:Cascading Style Sheets  层叠样式表

内容和样式分离,易于修改样式

1.1 CSS语法

选择器中的行语句以分号结束

选择器:p{}        注释:  /*注释*/

p{

  font-size:12px;     /* 字号*/

  color:blue;     /*颜色*/

  font-weight:bold;     /*加粗*?

}

 

1.1.1 CSS 添加方法——行内

<p style="color:red">

天使投资指早期投资,尤其指个人早期投资

</p>

1.1.2 CSS添加方法——内嵌

写在head标签内,对当前页面的所有p标签有效

<head>

<style type="text/css">

 p{

   color:red;

    }

</style>

</head>

1.1.3 CSS添加方法——单独文件

外部样式表文件 

style.css

p{

   color:red;     /*设置文字颜色*/

}

 

h1{

  color:blue;

}

 

1.htm

<!DOCTYPE html>

<html>

<head>

 <link rel="stylesheet" href="css/style.css">      link:css 自动扩展

</head>

<body>

  <p>内容</p>

</body>

</html>

 

单独文件优点:

    页面结构HTML代码与样式CSS代码完全分离

    维护方便

    如果需要改变网站风格,只需要修改公共CSS文件

    可以在同一个HTML文档内部引用多个外部样式表、

1.1.4 CSS添加方法——优先级

1. 多重样式可以重叠,可以覆盖

2.样式的优先级按照就近原则

3.行内样式>内嵌样式>连接样式>浏览器默认样式


2.CSS 选择器

2.1 标签选择器

CSS文件:

<style type="text/css">

  body{

    bacground-color:#ccc;

    text-align:center;

    font-size:12px;}

  h1{font:"黑体"; font-size:20px;}

  p {color:red; font-size:16px}

  hr {width:200px} 

  }

</style>

 

HTML文件:

<body>

  <h1> 标题 </h1>

  <hr>

  <p>正文的段落</p>

  版权所有

<body>

 

2.2 class类别选择器

点开头       px:pixel  像素

CSS文件:

<style type="text/css">

   p      {font-size:12px;}

  .one{font-size:18px;}

  .two{font-size:24px;}

</style>

 

HTML文件:

<body>

    <p class="one"> 类别1</p>

    <p class="one"> 类别1</p>

    <p class="two"> 类别2</p>

    <p class="two"> 类别2</p>

    <p> 普通段落中的文字</p>

</body>

 

2.3 ID选择器

CSS文件:

<style type="text/css">

    #one{font-size:12px;}

    #two{font-size:24px;}

</style>

 

HTML文件:

<body>

    <p id="one"> 文字1 </p>

    <p id="two"> 文字2 </p>

</body>

 

2.4 嵌套声明:

空格隔开表示嵌套,内部也需要嵌套使用

CSS文件:

 

<style type="text/css">

    p span{

      color:red;

    }

</style>

 

HTML文件:

<body>

 <p><span>天使投资</span>是投资方式的一种</p>

</body>

2.5 集体声明

逗号隔开,表示采用同一种样式

CSS文件:

<style type="text/css">

    h1,p {text-align:center; }

</style>

 

HTML文件:

<body>

    <h1>欢迎访问论坛</h1>

 <p>欢迎访问论坛</p>

</body>

2.6 全局声明

*  开头,针对所有的网页元素

<style type="text/css">

    *  {text-align:center; }

</style>

2.7 关于混合使用

多个class选择器混用,用空格分开

<div class="one yellow left"> ... </div>

 

id和class选择器混用:

<div id="my" class="onr yellow my">...</div>

 

id选择器只能被引用一次,所以不要多次使用也不要同时使用


 

3. CSS样式

3.1 文本字体类型样式

常用单位:

px——像素   

em——1em:一个字符    2em:两个字符  自适应用户所使用的字体

%——百分比    相对于父层的样式*m% 得到子层数据

 

颜色:

rgb(x,x,x)   取值:0~255

rgb(x%,x%,x%)    取值:0%~100%

rgba(x,x,x,x)  a取值:0~1  0为完全透明   1 为完全不透明

#rrggbb     十六进制数 :红色#ff0000   

 

文本:

color——文本颜色——上文已述

letter-spacing——字符间距——2px   -3px

line-height——行高——14px   1.5em   120%

text-align——对齐——center   left   right   justify(两端对齐)

text-decoration——装饰线——none  overline  underline  line-through

text-indent——首行缩进——2em 

 

字体:

font——在一个声明中所有字体属性——font:bold  18px  ’幼圆‘

font-family——字体系列——font-family:"Hiragino Sans GB"   "Microsoft YaHei"   "sans-serif" 

(给了多个字体,则从前往后搜索,直到搜索到有的作为默认字体) 

font-size——字号——14px   120%

font-style——斜体——italic

font-weight——粗体——bold

 

简化font写法:

font:斜体    粗体   字号/行高    字体;

font:italic    bold    16px/1.5em    '宋体';

 

3.2 CSS 背景样式

背景属性:空元素需要先定义元素的高度和宽度 height、width

backgroud-color:颜色

backgroud-image:  url("logo.jpg")    背景图片

background-repeat:repeat          水平垂直重复填充                       

          repeat-x  只填充横向一行

          repeat-y  只填充纵向一列

          no-repeat     只显示一次

简化background写法:

background:颜色    图片     repeat

例子:

div{

  height:30px;

  width:60px;

  background: url("images/bgi.gif")  repeat-x

}

3.3 CSS超链接样式

:   ——  伪类选择器

链接的四种状态:

  a:link——普通的、未被访问过的链接

  a:visited——用户已访问的链接

  a:hover——鼠标指针位于链接的上方悬停

  a:active——链接被点击的时刻

顺序:

  a:hover 必须在a:link和a:visited之后

  a:active 必须在a:hover之后

口诀:LOVE & HATE

L——link   V——visited   H——hover  A——active

举例:

a:link{

  text-decoration:none;

  color:#09f;   /* 未访问*/

}

a:visited{

  text-decoration:none;

  color:#930;   /*已访问*/ 

}

a:hover{

  text-decoration:underline;

  color:#03c;   /*鼠标悬停*/

}
a:active{

  text-decoration:underline;

  color:#03c;  /*按下鼠标*/

}

## 超链接动态效果设定,即鼠标悬停放大字体:

CSS文件:

a{

  font-size:22px;

}

a:hover{

  font-size:120%  /*鼠标悬停变为1.2倍大小*/

}

HTML文件:

<a href="#"> websign </a>

3.4 CSS列表与表格样式

无序列表ul和有序列表ol共用样式:

list-style——所有用于列表的属性设置于一个声明中

list-style-image——为列表项标志设置图像

list-style-position——标志的位置

list-style-type——标志的类型

 

list-style-type具体取值:

无序列表:

none——无标记

disc——默认。标记是实心圆。

circle——标记是空心圆

square——标记是实心方块

有序列表:

decimal——标记是数字

lower-roman——小写罗马数字

upper-roman——大写罗马数字

lower-alpha——小写英文字母

upper-alpha——大写英文字母

lower-Greek——小写希腊字母

lower-latin——小写拉丁字母

upper-latin——大写拉丁字母

 

life-style-position:
CSS文件:
<style type="text/css">

.inside{

  list-style-position:inside;

}

.outside{

  list-style-position:outside

}

</style>

HTML文件:

<ul class="inside">

  <li> HTML——网页结构</li>

  <li>CSS——网页样式</li>

  <li>JS——网页交互</li>

</ul>

 

<ul class="outside">

  <li> HTML——网页结构</li>

  <li>CSS——网页样式</li>

  <li>JS——网页交互</li>

</ul>

结果:

 

 

list-style-image:

可以规定列表的标号是图片,起到美化界面的效果。

list-style-image: url("images/bullet1.gif");

 

3.5 CSS表格样式

表格大小:width,height 宽高

table{width:500px;height:200px;}

表格边框:border  boder-collapse属性:合并表格和单元格边框样式

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

table{boder-collapse:collapse;} 使表格边框和单元格边框重叠

奇偶选择器:nth-child(odd|even)    例如隔行显示不同的颜色

表头单元格th单独设置即可

tr:nth-child(odd){ }   tr表示行,odd表示奇数,#EAF2D3设置绿色

 


 

4.CSS布局与定位

 

4.1 盒子模型

概念:页面中所有元素都可以看成一个盒子content,占据着一定的页面空间

content内容  padding 内边距  border 边框  margin  外边距

 

其中padding,border,margin 都有四个子属性:

-top  -bottom -left -right

一个盒子的实际宽度、高度:content+padding+border+margin

 

 例子:

CSS文件:

<html>

<head>

<style type="text/css">

#box{                  # id选择器,只能使用一次

  width:100px;

  height:100px;

  border:1px solid:

  padding:20px;

  margin:10px;

}

</style>

</head>

HTML文件:

<body>

<div id="box">

  内容内容内容...

</div>

</body>

当内容溢出盒子边框时,overflow属性取值:

hidden:超出部分不可见

scroll:显示滚动条

auto:如果有超出部分,显示滚动条

border属性子属性:

border-width:px、thin、medium、thick

boder-style:dashed(虚线)、dotted(点线)、solid(单实线)、double(双实线)

border-color:颜色

简写border: width style color

水平分割线:

.line {

  height:1px;

  width:500px;

  border-top:1px solid #e5e5e5

}

padding属性:

padding取值:px,%(相对于外层盒子)

首先,对浏览器默认设置清0

* {

     margin:0;

  padding:0; 

 }

margin属性:

margin:1px;  =   margin:1px 1px 1px 1px

margin: top  right bottom left   上右下左——顺时针顺序

若省略后两个值,则代表上下相等,左右相等

margin的合并:垂直方向合并(那个边距大选哪个 ),水平方向不合并

水平居中:

图片、文字居中:text-align:center;

div水平居中:margin:0 auto;

举例:假设有一个大盒子newsimglist  现要往盒子里放三张图片

首先需要消除浏览器默认文字间隙:

#newsimglist{

  font-size:0;  /*否则图间有间隙*/

}

然后用嵌套选择器定义每幅图片:

#newsimglist img{

    height:100px;

    width:100px;

    margin-left:5px;

    border:1px solid #0cf

    padding:5px;

}

 

4.2 CSS定位机制

CSS中,存在3种定位机制:文档流定位,浮动定位,层定位

文档流定位为默认定位

4.2.1 文档流定位

所有的元素从上到下,从左到右依次排列。

元素分类:block、inline、inline-block

元素类型可以通过display属性进行转换

block类型元素

block元素特点:1.独占一行  2.元素的height、width、margin、padding都可设置

常见block类型元素:<div>    <p>    <h1>...<h6>    <ol>    <ul>    <table>    <form>

将元素显示为block元素:

a{

  display:block;

}

inline元素a转换为block元素,从而使a元素具有块状元素特点(独占一行)

inline类型

inline类型特点:1.不独占一行  2.width、height 不可设置  3.width就是它包含的文字或图片的宽度,不可改变

常见的inline元素:<span>    <a>

将元素显示为inline元素:

div{

  display:inline;

}

inline元素的间距问题:元素之间默认有间隙,处理起来比较麻烦,一般采用转化为block

inline-block类型

顾名思义,即同时具备inline元素,block元素的特点

inline-block类型特点:1.不单独占用一行   2.元素的height、width、margin、padding都可设置

常见inline-block类型元素:<img>

显示为inline-block元素:display:inline-block;

 

4.2.2 浮动定位float

div实现横向多列布局

float属性:left——左浮动    right——右浮动    none——不浮动

div{

  width:200px;

  height:200px;

  border:1px solid red;

  float:left;

}

<div id="box1"></div>

<div id="box2"></div>

此时box1和box2已经水平排列。

float属性特点:此处用几张图来说明

 

 

 

 

 

 

 

 

 

 clear属性:

clear取值:

both——清除左右两边的浮动

left和right——清除一个方向的浮动

none默认值,不清除浮动

 

如上图,clear:right之后右边不能有浮动,故另开一行。

 

 

# footer{

  clear:both;

}

 

4.2.3 层定位

像图像软件中的图层一样可以对每个layer能够精确定位操作

postion属性:static——文档流    fixed——固定定位    relative——相对定位    absolu——绝对定位

position——fixed

相对于浏览器窗口进行定位,不会随浏览器窗口的滚动条滚动而变化,总在视线里

#fix-box{

  width:200px;

  height:200px;

  border:1px solid red;

  position:fixed;

  left:100px;   /*距离浏览器左侧的距离*/

  top:50px;    /*距离浏览器顶部的距离*/

}

position——relative

定位为relative的元素脱离正常的文档流中,但其在文档流的位置依然存在(下一个static不会取代)

relative定位的层总是相对于其直接父元素,无论其父元素是什么定位方式

#relative-box{

  position:relative;

  top:20px;

  left:20px;

}

position——absolute

定位为absolute的层脱离正常文本流,但与relative的区别在于原位置不再存在(下一个static会取代)

对于absolute定位的层总是相对于其最近的定义为absolut或relative的父层,而这个父层并不一定是其直接父层

#absolute-box{

  position:absolute;

  top:20px;

  left:20px;

}

若所有父层都为定义absolute或relative,则其将相对body进行定位

注意:值可以为负数,负数即超出父盒子,起到扩展的作用

relative+absolute

结合使用,例如广告的图片和图片上的文字

 div{

  border:1px solid red;

  color:#fff

}

#box1{

  width:170px;

  height:190px;

  position:relative;

}

#box2{

  width:99%;

  position:absolute;

  bottom:0;  

}


 

5.CSS3

5.1圆角边框border-radius

 

 

border-top-left-radius——左上角的形状

border-top-right-radius——右上角的形状

border-bottom-left-radius——左下角的形状

border-bottom-right-radius——右下角的形状

取值:1. 水平值  2.垂直值     

若只有一个取值,则认为水平垂直方向取值相同

div{

  height:100px;

  width:150px;

  border:1px solid blue;

  border-top-left-radius:40px 20px;

  border-bottom-right-radius:20px;

}

常用:

1.四个方向都做圆角(做出半圆)

div{

  width:350px;

  height:50px;

  border:2px solid #a1a1a1;

  border-radius:25px;  /*四个角都做圆角,且是高度的一半*/

}

2.利用圆角边框做出圆形:只需半径为高度和宽度的一半即可

 

5.2 阴影box-shadow:

box-shadow取值:

inset——水平位移  垂直位移  模糊距离  颜色;

inset——可选,内部阴影

outset——默认值,外部阴影

div{

  width:300px;

  height:100px;

  background-color:#f90;

  box-shadow:10px 10px 5px #888  /*水平 垂直 模糊距离 颜色*/

}

 

文本与文字:

text-shadow:水平偏移  垂直偏移  阴影大小  颜色  

若省略阴影大小,则默认与文字一样大小

<h1> Web Design </h1>

h1{text-shadow:2px 2px #FF0000}

h1{text-shadow:2px 2px 4px #FF0000}

描边效果:

h1{text-shadow:0 0 3px #F00}

浮雕效果:

h1{

  color:white;

  text-shadow:2px 2px 4px #000;

}

word-wrap属性:允许唱单词、URL强制进行换行

取值:normal——正常  break-word——换行

5.3 @font-face规则:

@font-face{

  font-family: kastlerFont;  定义字体名称

  src:url('fonts/kastler.ttf'),       定义字体来源,逗号分隔

     url('fonts/kastler.eot'),

     url('fonts/kastler.woff'),

     url('fonts/kastler.svg');

}

p{

  font-family:kastlerFont;       引用字体

}

 

5.4 2D转换方法:

对元素进行旋转、缩放、移动、拉伸 

transform属性:rotate()——旋转    scale()——缩放

transform:rotate(x)

#rotateDiv{transform:rotate(30deg);}  正值,顺时针旋转30度(若负值则为逆时针)

transform:scale(x,y)  x:水平方向缩放倍数    y:垂直方向缩放的系数  0-1为缩小,大于1为放大

box:hover{transform:scale(1.2);}  鼠标悬停时图片缩放

 

5.5 过渡transition

将元素的某个属性从"一个值"在指定的时间内过渡到"另一个值"

transition取值:属性名  持续时间  过渡方法

transition-property——属性名|all 对哪个属性进行变化

transition-duration——持续时间

transition-timing-function——过渡使用的方法(函数)

  取值:linear    匀速

     ease    慢快慢

     ease-in    慢快

     ease-out    快慢

     ease-in-out    慢快慢

div{

  hetght:30px;

  width:100px;

  line-height:30px;

  border-radius:5px;

  color:#000;

  background-color:silver;

  transition:all 1s linear

}

div:hover{

  color:white;

  background-color:#45B823

}

<div>web sign</web>

 

5.6 animation动画:

(1) 定义动画: @keyframes规则

(2) 调用动画: animation属性

@keyframes mycolor{           /*定义关键帧*/

  0%  {background-color:red;}      最开始播放

  30%     {background-color:blue;}

  60%  {background-color:yellow;}

  100%   {background-color:green;}    播放完成

}

div:hover{

  animation:mycolor 5s linear;

}

animation属性取值:

animation-name:  引用@keyframe动画的名称

animation-duration:  动画完成时间

animation-timing-function:  规定动画速度曲线,与transition取值相同。默认是"ease"

animation-play-state:  running(播放)|paused(停止)   鼠标悬停播放动画,鼠标移出不再播放

 

5.7 3D变换

transform属性:transform-style:preserve-3d

transform属性:rotateX()  rotaeY()  rotateZ()     角度deg

perspective属性:像素值越小,离舞台越近;像素值越大,离舞台越远

二维变换,无透视。三维变换,有透视

3D变换通常将要变换的元素嵌套:舞台>父容器>内容

父容器->旋转

transform-style:preserve-3d;

transform:rotateY(60deg)

舞台->透视关系

 perspective:100px;    眼睛到舞台的距离

举例:

<div id="stage">

  <div class="box x">

    <img src="frog.jpg">

  </div>

  <div class="box y">

    <img src="frog.jpg">

  </div>  

       <div class="box z">

    <img src="frog.jpg">

  </div>

</div>

#stage{

  width:300px;

  margin:100px auto;

  perspective:100px;

}

.box{

  width:100px;

  height:100px;

  float:left;

  transition:linear 1s;

  transform-style:preserve-d;

}

box{

  width:75px;

  height:100px;

}

.x:hover{ transform:rotateX(60deg);}

.y:hover{ transform:rotateY(60deg);}

.z:hover{ transform:rotateZ(60deg);}


 

 

6. Sublime Text 操作:

link:css   形成链接样式表文件的代码

div#nav  生成带有id属性的标签

div.bar   生成带有class属性的标签

w30    width:30pxl;

h30   height:30px;

mg10   margin:10px;

pd5  padding:4px

lh2em  line-height:2em

bgc   背景颜色

ctrl+s 保存

bdrs  border-radius扩展

bxsh box-shadow扩展

transform:rotate()  旋转扩展