CSS | 青训营笔记

62 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天

CSS(上)

CSS是什么

  • is short for Cascading Style Sheets

  • 用来定义页面元素的样式

    • 设置字体和颜色
    • 设置位置和大小
    • 添加动画效果

image-20230116130520141

 h1{ 
     /*h1--选择器Selector:选择元素*/
     color: white; 
     /*color--选择器Property:选择属性;white--属性值Value*/
     font-size: 14px; 
     /*Property和Value组成一个声明Declaration*/
 }
 /*选择器+花括号组成一个规则*/

如何页面中使用CSS

 <!--外联-->  <!--推荐-->
 <link rel="stylesheet" href="/assets/style.css">
 <!--将css文件链接到html文件中-->
 ​
 <!--嵌入-->  <!--组件式开发-->
 <style>
   li {
     margin: 0;
     list-style: none;
   }
 ​
   p {
     margin: lem 0;
   }
 </style>
 <!--将css代码写在标签中-->
 ​
 <!--内联-->  <!--不推荐-->
 <p style="margin:lem">
   Example Content
 </p>
 <!--将样式赋给标签中的style属性-->
 <!--不需要写选择器-->
 ​
 <!---->

组件式开发模式下:可能会把html/css/js写在同一个文件

嵌入使用CSS示例
 <!DOCTYPE html>
 <html>
 ​
 <head>
   <meta charset="UTF-8">
   <title>Blog</title>
   <style>
     h1 {
       color: orange;
       font-size: 24px;
     }
 ​
     p {
       color: gray;
       font-size: 14px;
       line-height: 1.8;
     }
   </style>
   <!--style标签中嵌入css代码设置样式-->
 </head>
 ​
 <body>
   <h1>Web框架的架构模式探讨</h1>
   <p>在写干货之前,我想先探讨两个问题,
     模式的局限性?模式有什么用?</p>
 </body>
 ​
 </html>
 <!---->

效果:

image-20230116133848865

CSS是如何工作的

image-20230116134621836

选择器 Selector

  • 找出页面中的元素,以便设置样式

  • 可使用多种方法选择元素

    • 按照标签名、类名或 id
    • 按照属性
    • 按照 DOM 树中的位置
通配选择器
 <h1>This is heading</h1>
 <p>this is some paragraph.</p>
 ​
 <style>
 * {
   color: red;
   font-size: 20px;
 }
 </style>
 <!--星号*表示全部选择-->

效果:

image-20230116161332265

标签选择器
 <h1>This is heading</h1>
 <p>this is some paragraph.</p>
 ​
 <style>
 h1 {
   color: orange;
 }
 p {
   color: gray;
   font-size: 20px;
 }
 </style>
 <!--用标签名作为选择器-->

效果:

image-20230116161514484

id选择器
  • 标签中设置 id 属性

    • id 值保持唯一
  • 以 #id属性值 作为选择器

 <h1 id="logo">
   <img src="https://assets.codepen.io/59477/h5-logo.svg" alt="HTML5 logo" width="48" />
   HTML5 文档
 <h1>
 ​
 <style>
   #logo {
     font-size: 60px;
     font-weight: 200;
   }
 </style>
 <!---->

效果:

image-20230116162833605

类选择器
  • 标签中设置 class 属性

    • class 保持唯一
  • 以 .class属性值 作为选择器

 <h2>Todo List</h2>
 <ul>
   <li class="done">Learn HTML</li>
   <li class="done">Learn CSS</li>
   <li>Learn JavaScript</li>
 </ul>
 <style>
 .done {
   color: gray;
   text-decoration: line-through;
 }
 </style>

效果:

image-20230116163137286

属性选择器
属性选择器1
  • 以属性名作为选择器

  • input 标签

    • disabled 属性,使该输入框不可输入,可显示值
    • type 属性,password 值,输入后不可见
 <label>用户名:</label>
 <input value="zhao" disabled />
 ​
 <label>密码:</label>
 <input value="123456" type="password" />
 ​
 <style>
   [disabled] { /*属性选择器1*/
     background: #eee;
     color: #999;
   }
 </style>

效果:

image-20230116165758388

属性选择器2
  • 标签名 [ 属性名=" 值 " ] 形式作为选择器

    • input[type="password"]{}
 <p>
   <label>密码:</label>
   <input type="password" value="123456" />
   <input value="123" />
 </p>
 ​
 <style>
   input[type="password"] { /*属性选择器2*/
     border-color: red;
     color: red; 
   }
 </style>

效果:

image-20230116165717445

属性选择器3
 <p><a href="#top">回到顶部</a></p>
 <p><a href="https://assets.codepen.io/59477/h5-logo.svg">查看图片</a></p>
 ​
 <style>
   a[href^="#"] {
     color: #f54767;
     background: 0 center/1em url(https://assets.codepen.io/59477/arrow-up.png) no-repeat;
     padding-left: 1.1em;
   }
  
   a[href$=".jpg"] {
     color: deepskyblue;
     background: 0 center/1em url(https://assets.codepen.io/59477/image3.png) no-repeat;
     padding-left: 1.2em;
   }
 </style>

效果:

image-20230116183118151

伪类
  • 不基于标签和属性定位元素

  • 几种伪类

    • 状态伪类
    • 结构性伪类
状态伪类
 <a href="http://example.com">
   example.com
 </a>
 ​
 <label>
   用户名:
   <input type="text">
 </label>
 ​
 <style>
 a:link { /*链接本身的状态*/
   color: black;
 }
 ​
 a:visited { /*链接被点击过后的状态*/
   color: gray;
 }
 ​
 a:hover { /*链接被鼠标覆盖时的状态*/
   color: orange;
 }
 ​
 a:active { /*链接在鼠标点击时的状态*/
   color: red;
 }
 ​
 :focus { /*对a和label类选择focus属性*/
   outline: 2px solid orange;
 } 
 </style>

效果:

image-20230116222506104

结构性伪类
 <ol>
   <li>阿凡达</li>
   <li>泰坦尼克号</li>
   <li>星球大战:原力觉醒</li>
   <li>复仇者联盟 3</li>
   <li>侏罗纪世界</li>
 </ol>
 ​
 <style>
 li {
   list-style-position: inside;
   border-bottom: 1px solid;
   padding: 0.5em
 }
 ​
 li:first-child { /*选择第一个元素*/
   color: coral
 }
 ​
 li:last-child { /*最后一个元素*/
   border-bottom: none;
 }
 </style>

效果:

image-20230116222435633

组合器

image-20230116223522296

 <label>
   用户名:
   <input class="error" value="aa">
 </label>
 <span class="error">
   最少3个字符
 </span>
 ​
 <style>
   .error {
     color: red;
   }
   
   input.error { /*直接组合*/
     border-color: red;
   }
 </style>
 <article> 
   <h1>拉森火山国家公园</h1>
   <p>拉森火山国家公园是位于...</p>
   <section>
     <h2>气候</h2>
     <p>因为拉森火山国家公园...</p>
     <p>高于这个高度,气候非常寒冷...</p>
   </section>
 </article>
 ​
 <style>
   article p { /*后代组合*/
     color: black;
   }
 ​
   article > p { /*亲子组合*/
     color: blue;
   }
 ​
   h2 + p { /*相邻组合*/
     color: red; 
   }
 </style>
选择器组

CSS(上)
CSS是什么如何页面中使用CSS嵌入使用CSS示例CSS是如何工作的选择器 Selector通配选择器标签选择器id选择器类选择器属性选择器属性选择器1属性选择器2属性选择器3伪类状态伪类结构性伪类组合器选择器组