前端三要素-CSS

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>

<link rel="stylesheet" href="../1.我的第一个CSS程序/CSS/style.css">
<!--导入外部样式-->
</head>
<body>

<h1>我是标题标签</h1>

</body>
</html>


style.css
h1{
color: red;
}

 

1......4种导入方式

行内导入方式

 

比如我想给我一个 h1标签改变颜色  

 

 

 前端三要素-CSS

可以直接在<h1 >后面机上style,添加color属性

前端三要素-CSS

就可以改变元素颜色

前端三要素-CSS

 

 

 这种导入方式称为行内导入方式

 

2.内部选择器

直接在头部位置加上style  指定想要改变的标签  比如h1{} 即可

 

 前端三要素-CSS

 

 

 

3.外部导入方式

把改变条件放在css包内  利用link进行调用

前端三要素-CSS

 

 

 

4.(不常用  了解就可以)

前端三要素-CSS  

4种导入方式都是对标签进行操作  如果出现多个导入方式对同一标签进行操作的时候  这个时候采用就近原则   谁离的近就使用哪一个

 

 

 

 

 

2.基本选择器

 

1.标签选择器

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
h1{
color: red;
}

/*
标签选择器写在style中 会选中符合标签名的所有标签进行修改

但是,如果我有三个h1标签 我只想修改第一个h1那么标签选择器明显是无法满足效果的,这个时候就要使用类选择器
*/
</style>
</head>
<body>

<h1>我是标题标签</h1>
<h1>我是标题标签</h1>
<h1>我是标题标签</h1>
<h1>我是标题标签</h1>
<p>我是p标签</p>

</body>
</html>



2.类选择器

 

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.a{
color: red;
}
</style>
</head>
<body>
<!--如果我有三个h1标签 我只想修改第一个h1那么标签选择器明显是无法满足效果的,这个时候就要使用类选择器

给想要修改的h1标签起一个class名 然后再style里进行调用即可
<h1 class="a">我是标签标签</h1>
类选择器的写法

.+类名{


}

-->

<h1 class="a">我是标签标签</h1>
<h1 class="a">我是标签标签</h1>
<h1>我是标签标签</h1>
<h1>我是标签标签</h1>

</body>
</html>

3.id选择器

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
#b{
color: red;
}
</style>
</head>
<body>
<!--id选择器跟class差不多 都是起名字进行修改 但是class可以重复使用 id只能使用一次
<h1 id="b">我是标题标签</h1>
<h1 id="b">我是标题标签</h1>
这样写是错误的


依旧是在style内部样式里编写

#+id名{

}

-->
<h1 id="b">我是标题标签</h1>
<h1>我是标题标签</h1>
<h1>我是标题标签</h1>

</body>
</html>

三种选择器的优先级为  id>class>标签

 

 

3.层次选择器

1.后代选择器

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
body p{
color: red;
}
</style>
</head>
<body>
<!--在style内编写 body空格p{}

body p{}

选中body下所有的p标签

-->

<p>p0</p>
<p>p1</p>
<p>p2</p>
<p>p3</p>
<p>p4</p>

<ul>
<li><p>p5</p></li>
</ul>
<ul>
<li><p>p6</p></li>
</ul>
<ul>
<li><p>p7</p></li>
</ul>

</body>
</html>

2.子选择器

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
body>p{
color: red;
}
</style>
</head>
<body>
<!--
子选择器 会选中跟body>p有直接关系的p标签
在style内编写 body>p{}

这里只有
<p>p0</p>
<p>p1</p>
<p>p2</p>
<p>p3</p>
<p>p4</p>
发生了变化

而后面的在ul li里的p没有发生变化 因为隔断了一层

-->
<p>p0</p>
<p>p1</p>
<p>p2</p>
<p>p3</p>
<p>p4</p>

<ul>
<li><p>p5</p></li>
</ul>
<ul>
<li><p>p6</p></li>
</ul>
<ul>
<li><p>p7</p></li>
</ul>

</body>
</html>

3.相邻兄弟选择器

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.a+p{
color: red;
}
</style>
</head>
<body>

<!--相邻兄弟选择器
如果我想选中class=a下面的p3

可以使用这种方法 先定位a然后在style中编写 .a+p{}

就可以选中p3

相邻只针对下面的 上面的无效


-->

<p>p0</p>
<p>p1</p>
<p class="a">p2</p>
<p>p3</p>
<p>p4</p>

<ul>
<li><p>p5</p></li>
</ul>
<ul>
<li><p>p6</p></li>
</ul>
<ul>
<li><p>p7</p></li>
</ul>


</body>
</html>

4.通用选择器

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.a~p{
color: red;
}
</style>
</head>
<body>
<!--通用选择器 跟相邻兄弟选择器差不多 不过相邻兄弟选择器只能选中定位后的下面一个
而通用的可以选中定位后的多个(只能选中有直接关系的)
想ul li里的p标签依然不能实现


在style里编写 .a~p{}


-->

<p>p0</p>
<p>p1</p>
<p class="a">p2</p>
<p>p3</p>
<p>p4</p>

<ul>
<li><p>p5</p></li>
</ul>
<ul>
<li><p>p6</p></li>
</ul>
<ul>
<li><p>p7</p></li>
</ul>

<p class="a">p2</p>
<p>p3</p>
<p>p4</p>


</body>
</html>

5.结构尾类选择器(了解即可)

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
/*h1:hover{*/
/*background: red;*/
/*}*/
/*ul li:first-child{*/
/*background: red;*/
/*}*/
/*ul li:last-child{*/
/*background: yellow;*/
/*}*/
p:nth-child(2){
background: red;
}

p:nth-of-type(1){
background: red;
}
</style>
</head>
<body>
<!--标签后面跟上 ‘:’号的叫做尾类
hover 鼠标移动事件 等于加上后 你鼠标移动过去之后 背景颜色会变成background: red;

ul li:first-child{
background: red;
}
选中ul下面的li(后代选择器)
first-child(选中第一个)进行更换背景颜色操作


ul li:last-child{
background: yellow;
}
中ul下面的li(后代选择器)
last-child(选中最后一个)进行更换背景颜色操作




(无需记忆 了解即可)
p:nth-child(2){
background: red;
}
<p >p1</p>
<p >p2</p>
<p >p3</p>
选中当前p元素的父辈 父辈元素的第一个p 注意并且是当前元素才生效

如果在p1上面加上一个 h1标签
h1 我
<p >p1</p>
<p >p2</p>
<p >p3</p>
那么这个指令就会失效 而p:nth-of-type(1)则不会


p:nth-of-type(1){
background: red;
}
选中父元素,下的p元素的第1个
-->

<!--<h1>点我变色</h1>-->
<p >p1</p>
<p >p2</p>
<p >p3</p>
<ul>
<li>li1</li>
<li>li2</li>
<li>li3</li>
</ul>
</body>
</html>


6.属性选择器
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>

<!---->
<style>
.demo a{
float: left;
width: 50px;
height: 50px;
background: red;
margin-left: 10px;
border-radius: 10px;
display: block;
text-decoration: none;
text-align: center;
font: bold 20px/50px Arial;
}
/*
选中a标签中的id为1的元素
*/
/*a[id="1"]{*/
/*background: black;*/
/*}*/


/*
class里面有link的元素
=(绝对等于)
*=(包含等于)
*/
/*a[class*="link"]{*/
/*background: yellow;*/
/*}*/


/*
选中href中以https开头的元素
^= 以..开头
*/
/*a[href^="https"]{*/
/*background: yellow;*/
/*}*/

/*
选中href中以lk结尾的元素
$= 以..结尾
*/
/*a[href $=lk]{*/
/*background: yellow;*/
/*}*/
</style>
</head>
<body>
<!--标签定位某一个属性进行修改
a[id=1]{
a标签里id=1的

}

-->
<p class="demo">
<a href="https:www lk" class="link k" id="1">1</a>
<a href="https:www" id="2">2</a>
<a href="">3</a>
<a href="">4</a>

</p>


</body>
</html>


spa标签
在一些特别情况下可以使用span标签把一些关键字括起来(暂时没发现什么用)


字体样式
font-family 字体样式
font-size 字体大小
font-weight 字体粗细
color 字体颜色

文本样式
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!-- text-indent 首行缩进
text-align: center; 文本居中
`text-align:left 居左
`text-align:right 居右
line-height:行高
text-decoration: none 去掉下划线
text-decoration: underline; 增加下划线
text-decoration: line-through;增加中划线
text-decoration: overline;增加上划线
-->
<style>
.a{
/*text-align: center;*/
text-indent: 2em;
height: 30px;
line-height: 30px;
background: red;
text-decoration: underline;
text-decoration: line-through;
text-decoration: overline;
}
a{
text-decoration: none;
}
</style>
</head>
<body>
<p class="a">123123</p>
<p class="b">123123</p>
<p class="c">123123</p>
<a href="">点我</a>
</body>
</html>



在一些别的情况下 可能会用到图片跟文字水平对齐
比如

前端三要素-CSS

 

 

 达到这种效果要

使用

vertical-align: middle

这种方法需要参照物
比如图片img跟文字span

想要这两个属性相对齐
在style可以这样写
<style>
img,span{
vertical-align: middle;
}
</style>



伪类
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>

/*
text-decoration: none;去掉下划线
a:hover伪类 鼠标移动到a标签的时候 颜色跟字体发生变化
a:active 鼠标按住a标签的时候 发生颜色变化 移开则恢复
*/


a{
text-decoration: none;
color: red;
}
a:hover{
color: orange;
/*font-size: 100px;*/
}
a:active{
color: black;
}
/*
加阴影
text-shadow
阴影颜色 水平偏移 垂直偏移 阴影半径
*/
#j{
text-shadow:red 10px 10px 10px;
}
</style>
</head>
<body>

<a href="#">
<img src="imgage/13260619927521479.jpg" >
</a>
<p>
<a href="#">蓝色少女</a>
</p>
<p>
<a href="#">作者:未知</a>
</p>
<p id="j">
¥99
</p>
</body>
</html>
后面加上:的都可以理解为伪类


列表样式的练习

前端三要素-CSS

 

 

 前端三要素-CSS

 

 

 imgages包内需要两张向下跟向左的箭头图片  

完成效果图前端三要素-CSS

自己画的箭头===

 

背景跟渐变

 

比如说想设置一个背景图片  

 background-repeat: no-repeat;

可以先设置一个div

<div class="div1"></div>
然后给它进行style渲染美化
<style>
div1{
width: 300px;宽度
height: 300px;高度
border: 1px solid black;盒子边框
background-image:url("imgages/2.png");背景图片
}
   如果直接这样写会发生图片充满整个盒子的情况 如:

前端三要素-CSS

 

 

 前端三要素-CSS 


  


想要解决上面的方法 可以给div1添加属性
 background-repeat: no-repeat;
这样就可以解决掉

.div1{
background-repeat:repeat-x;只显示x轴的图片
}
.div1{
background-repeat:repeat-y;只显示y轴的图片
}



渐变色<style>
    body{
/*background: blue;*/
background-image: linear-gradient(50deg,blue,red 50%);
}
更换背景
</style>

盒子模型跟边框的使用
前端三要素-CSS

 

 

盒子分为外边距(margin)跟内边距(padding) 还有border边框

外边距是值  盒子距离浏览器的距离

前端三要素-CSS

 

 黄色部分为外边距  每个盒子创建的时候都有一个默认的外边距为8px








border: 1px solid red; 边框的写法 1px solid为1px的实线(dashed为虚线) red为红色


border-radius ;可以给边框设置形状   100%为圆形
如果
border-radius ;后面有四个值  那么对应的是
左上  右上  右下  坐下  顺时针旋转

 

前端三要素-CSS

上一篇:libimobiledevice 安装试用


下一篇:如何压测ECS产品托管的DUBBO服务