CSS的使用

为什么要学习CSS?

HTML画页面,这个页面就是页面就是页面需要的元素罗列起来,但是页面效果很差,不好看,为了让页面好看,为了修饰页面->CSS
CSS的作用:修饰HTML页面

HTMLCSS的关系
先有HTML页面,修饰页面CSS

CSS名字:cascading style sheets(层叠样式表)

CSS的书写方式

内联样式(行内样式)

在标签中加入一个style属性,CSS的样式作为属性值
多个属性值之间用;进行拼接
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1 style="color: darkolivegreen ;font-family: '宋体';">这是一个标题</h1>
</body>
</html>

内部样式

head标签中加入一个style标签,在里面定位到你需要修饰的元素,然后在{}中加入你要修饰的样式
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
  <style>
    h1{
      color: darkcyan;
      font-family: '宋体';
    }
  </style>
</head>
<body>
<h1>这是一个标题</h1>
</body>
</html>

外部样式

首先要创建一个CSS文件,CSS文件的后缀.css
html文件需要引入外部资源
image

在创建html页面:
image

在实际开发中三种书写方式用的最多的是:
第三种,外部样式,因为这种方式真正做到了元素页面和样式分离

三种书写方式优先级:就近原则
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

  <style>
    h1{
      color: cadetblue;
      font-family: 宋体;
    }
  </style>
  <link rel="stylesheet" href="demo1.css" type="text/css">
</head>
<body>
<h1 style="color: darkolivegreen">这是一个标题</h1>
</body>
</html>

CSS学习重点

image

元素选择器

通过元素的名字进行定位,它会获取页面上所有这个元素,无论藏的多深,都可以获取到
格式:
元素名字{
css样式;
}

  <style>
    h1{
      color: green;
    }
    i{
      color: darkolivegreen;
    }
  </style>
</head>
<body>
<h1><i></i></h1>
<h1>我是一</h1>
<h1>我是一个</h1>
<h1>我是一个帅</h1>
<h1>我是一个帅哥</h1>
</body>
</html>

类选择器:

不同类型的标签使用相同的类型
格式:
.class的名字{
css样式;
}

<style>
    .name{
      color: cadetblue;
    }
    .user{
      color: blueviolet;
    }
  </style>
</head>
<body>
<h1 class="name"><i></i></h1>
<h1 class="user">我是一</h1>

id选择器

可以定位唯一的一个元素,不同的标签可以使用相同的id,但是一般会进行人为的控制,让id是可以唯一定位到一个元素
格式:

#id名字{
css样式
}

<style>
    #myid{
      color: brown;
    }
    #cat{
      color: darkorchid;
    }
  </style>
</head>
<body>
<h1 class="name"><i></i></h1>
<h1 class="user">我是一</h1>
<h1>我是一个</h1>
<h1 id="cat">我是一个帅</h1>
<h1 id="myid">我是一个帅哥</h1>

优先级别:id选择器 > class选择器 > 元素选择器

div和span

divspan结合css用于页面的布局,div+css用于页面布局
div属于块级元素 ---> 换行
span属于行内元素 ---> 没有换行的效果
span:里面的内容占多大,span包裹的区域就多大

 <style>
    div{
      border: 1px darkred solid;
    }
    span{
      border:1px green solid;
    }
  </style>
</head>
<body>
<div>老男孩</div>
<div>老男孩</div>
<span>老男孩</span>
<span>老男孩</span>

关系选择器

后代选择器:只要是这个元素的后代,样式都会发生改变

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
  <style>
    div{
      color: darkred;
    }
  </style>
</head>
<body>
<div>
  <h1>老男孩</h1>
  <h1>老男孩</h1>
  <h1>girl</h1>
  <span>
    <h1>这是标题</h1>
    <h1>这是标题</h1>
  </span>
</div>
</body>
</html>

image

子代选择器:只改变子标签的样式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
  <style>
    div>h2{
      color: darkred;
    }
    span>h3{
      color: chartreuse;
    }
  </style>
</head>
<body>
<div>
  <h2>老男孩</h2>
  <h2>老男孩</h2>
  <h2>girl</h2>
  <span>
    <h3>这是标题</h3>
    <h3>这是标题</h3>
  </span>
</div>
</body>
</html>

image

属性选择器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
  <style>
    input[type="password"]{
      background: darkorchid;
    }
    input[type="text"]{
      background: chartreuse;
    }
    input[name="user1"]{
      background: aquamarine;
    }
  </style>
</head>
<body>
<form action="" method="get">
  用户名:<input type="text" name="user"><br>
  用户名2:<input type="text" name="user1" >&emsp;码:<input type="password" name="pwd"><br>
  <input type="submit">
</form>
</body>
</html>

image

伪类选择器:向某些选择器添加效果

一般伪类选择器都用在超链接上

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
  <style>
/*设置禁止状态*/
    a:link{
      color: red;
    }
    /*设置鼠标悬浮状态*/
    a:hover{
      color: aqua;
    }
    /*设置触发状态*/
    a:active{
      color: green;
    }
  /* 设置完成状态*/
a:visited{
  color: cornflowerblue;
}
  </style>
</head>
<body>
<a href="https://www.baidu.com" >这是我的伪类选择器</a>
</body>
</html>

导航栏练习
image

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        ul {
            list-style-type: none; /*去除下划线*/
        }

        li {
            float: left;/*设置向左浮动*/
            margin-left: 20px; /*设置间隔*/
        }

        a {
            text-decoration: none; /*去掉下划线*/
            font-size: 12px; /*设置字体大小*/
            color: black;
        }

        a:hover {
            color: red; /*设置伪属性,放在标签上飘红*/
        }

        div {
            position: absolute; /*绝对定位*/
        }
    </style>
</head>
<body>
<div>
    <ul>
        <li>
            <a href="">新闻</a>
        </li>
        <li>
            <a href="">hao123</a>
        </li>
        <li>
            <a href="">地图</a>
        </li>
        <li>
            <a href="">贴吧</a>
        </li>
        <li>
            <a href="">视频</a>
        </li>
    </ul>
</div>
</body>
</html>

浮动:float

浮动设计的初衷是为了解决文字环绕图片问题,浮动后一定不会将文字挡住,这是设计初衷,不能违背
CSS的float使元素脱离文档流,按照指定的方向(左或右发生移动)直到它的外边缘到包含框或另一个浮动框的边框为止。
文档流:文档中可显示对象在排列时所占用的位置/空间。而脱离文档流就是在页面中不占原来的位置了

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
  <style>
    img{
      float: left;
    }
  </style>
</head>
<body>
<img src="包子1.png" alt="">
浮动设计的初衷为了解决文字环绕图片问题,浮动后一定不会将文字挡住,这是设计初衷,不能违背的。浮动设计的初衷为了解决文字环绕图片问题,浮动后一定不会将文字挡住,这是设计初衷,不能违背的。浮动设计的初衷为了解决文字环绕图片问题,浮动后一定不会将文字挡住,这是设计初衷,不能违背的。浮动设计的初衷为了解决文字环绕图片问题,浮动后一定不会将文字挡住,这是设计初衷,不能违背的。浮动设计的初衷为了解决文字环绕图片问题,浮动后一定不会将文字挡住,这是设计初衷,不能违背的。浮动设计的初衷为了解决文字环绕图片问题,浮动后一定不会将文字挡住,这是设计初衷,不能违背的。浮动设计的初衷为了解决文字环绕图片问题,浮动后一定不会将文字挡住,这是设计初衷,不能违背的。浮动设计的初衷为了解决文字环绕图片问题,浮动后一定不会将文字挡住,这是设计初衷,不能违背的。浮动设计的初衷为了解决文字环绕图片问题,浮动后一定不会将文字挡住,这是设计初衷,不能违背的。浮动设计的初衷为了解决文字环绕图片问题,浮动后一定不会将文字挡住,这是设计初衷,不能违背的。浮动设计的初衷为了解决文字环绕图片问题,浮动后一定不会将文字挡住,这是设计初衷,不能违背的。浮动设计的初衷为了解决文字环绕图片问题,浮动后一定不会将文字挡住,这是设计初衷,不能违背的。
</body>
</html>

浮动原理:

当把框1向右浮动时,它脱离文档流并且向右移动,直到它的右边缘碰到包含框的右边缘
image

再看下图:
如果包含框太窄,无法容纳水平排列的三个浮动元素,那么其它浮动块向下移动,直到有足够的空间,如果浮动元素的高度不同,那么当它们向下移动时可能被其他浮动元素"卡住"
image

再看下图:
当框1向左浮动时,它脱离文档流并且向左移动,直到它的左边缘碰到包含框的左边缘,因为它不再处于文档流中,所以它不占据空间
实际上覆盖了框2,使框2从视图中消失
如果把所有三个框都向左移动,那么框1向左浮动直到碰到包含框,另外两个框向左浮动直到碰到前一个浮动框.
image

浮动的语法:

image

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div style="background-color: green">
        <div style="width:100px;height:100px;background-color: red;float: left" >11</div>
        <div style="width:200px;height: 100px;background-color: blue ;float: left">22</div>
        <div style="width:300px;height: 100px;background-color: yellow;float:left">33</div>
    </div>
</body>
</html>

image

用浮动要考虑影响,看看是否对其他的元素有影响.

消除浮动影响:

1.给浮动的父节点加入一个属性:overflow:hidden
2.给父节点加一个高度
3.被影响的元素,给他加入一个属性

定位

position属性指定了元素的定位类型

absolute

生成绝对定位的元素,相对于static定位以外的第一个父元素进行定位,元素的位置通过‘left’,‘top’,‘right’,‘bottom’属性进行规定
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
  <style>
    .outer{
      background-color: lightcoral;
      width: 200px;
      height: 200px;
      /*margin-left: 200px;*/
      position: relative;
    }
    .div0{
      width: 50px;
      height: 50px;
      background-color: green;
    }
    .div1{
      width: 50px;
      height: 50px;
      background-color: red;
      position: absolute;
      left: 20px;
      top: 20px;
    }
  </style>
</head>
<body>
<div class="outer">
  <div class="div0">11</div>
  <div class="div1">22</div>

</div>
</body>
</html>

image

总结:
当给一个元素设置了绝对定位的时候,它相对谁变化呢?
它会向上一层一层的找父级节点是否有定位,如果直到找到body也没有定位,那么就相对于body进行变化,如果父级节点有定位(绝对定位,相对定位,固定定位),但是一般我们会配合使用父级为相对定位,当前元素为绝对定位,这样这个元素就会相对父级位置产生变化,都会释放原来的位置,然后其他元素会占用那个位置

开发中建议使用:父集节点relative定位,子节点使用相对定位

fixed

生成绝对定位的元素,相对于浏览器窗口进行定位,元素的位置通过‘left’,‘top’,‘right’,‘bottom’属性进行规定

应用场合:
在页面过长的时候,将某个元素固定在浏览器的某个位置上,当拉动滚动条的时候,这个元素位置不动
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
  <style>
    #fix{
      width: 20px;
      height: 150px;
      background-color: green;
      position: fixed;
      right: 0;
      top: 50px;
    }
  </style>
</head>
<body>
<div id="fix"></div>
  <p>你好</p>
  <p>你好</p>
  <p>你好</p>
  <p>你好</p>
  <p>你好</p>
  <p>你好</p>
  <p>你好</p>
  <p>你好</p>
  <p>你好</p>
  <p>你好</p>
  <p>你好</p>
  <p>你好</p>
  <p>你好</p>
  <p>你好</p>
  <p>你好</p>
  <p>你好</p>
  <p>你好</p>
  <p>你好</p>
  <p>你好</p>
  <p>你好</p>
  <p>你好</p>
  <p>你好</p>
  <p>你好</p>

</body>
</html>

relative

生成相对定位的元素,相对于其正常位置进行定位,因此,left:20会向元素的left位置添加20像素
效果:在进行相对定位以后,元素原来所在的位置被保留了
一般情况下,left和right不会同时使用,选择一个方向即可,top和bottom不会同时使用,选择一个方向即可
优先级:左上>右下
相对定位的应用场合:
1.元素在小范围移动的时候
2.结合绝对定位使用
再说一个属性:z-index
设置堆叠顺序,设置元素谁在上谁在下
注意:z-index属性要设置在定位的元素上
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div style=" width: 300px;height: 300px;background-color: lightcoral">
  <div style="width:50px;height: 50px;background-color: yellow;position:relative;left: 20px;z-index: 10"></div>
  <div style="width: 50px;height: 50px;background-color: red;position: relative;bottom: 20px;right: 20px;z-index: 100"></div>
  <div style="width: 50px;height: 50px;background-color: green; "></div>
</div>
</body>
</html>

static:默认值,元素出现在正常的流中

静态效果:就是元素出现在它本该出现的位置,可以直接省略

盒子模型

margin:用于控制元素于元素之间的距离,margin的最基本用途就是控制元素周围空间的间隔,从视觉上达到相互隔开的目的
padding:用于控制内容与边框的距离
border:围绕在内边距和内容外的边框
content:盒子的内容,显示文本和图像
image

posted @   家购诗  阅读(7)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示