CSS学习-掘金青训营-2022-07-29

这是我参与「第四届青训营 」笔记创作活动的第7天

一、css简介

 

 

  • css全程Cascading Style Sheets
  • 其作用是定义页面元素样式,例如:
    1. 设置字体颜色
  1. 设置位置与大小
  2. 添加动画效果等

二、在页面中使用css

其方法有三种

  • 外链
  • 嵌入
  • 内联

通常推荐外联与嵌入的方式使用css,内联通常用于为某个元素添加特殊的样式。

<!--1、外部链接-->
<link rel="stylesheet" href="/assets/style.css">

<!--2、嵌入 >
<style>
li{
margin: 0;
list-style:none;
}
p{
margin: 1em 0;
}
<style>

<!--3、内联-->
<p style="margin: 1em 0">Content</p>

三、css工作流程

CSS工作流程.webp

注意:当出现拼写错误的css元素时,浏览器会直接忽略该元素。

四、css基本使用

伪类

伪类就是标签在某些特殊情况下显示的样式

a:link 超链接默认情况

:visited 访问过了的

:hover 鼠标移到上面

:active 点下后的样式

:focus 输入框点下后输入的样式(不之于链接)

li: first-child 如果li是父级的第一个子元素显示的样式

li:last-child 父级的最后一个子元素

组合样式

input.error 标签且class=“error”显示的样式

名称 语法 说明 示例
直接组合 AB 满足A同时满足B input:focus
后代组合 A B 选中B,如果它是A的子孙 nav a
亲子组合 A>B 选中B,如果它是A的子元素 section>p
兄弟选择器 A~B 选中B,如果它在A后且和A同级 h2~p
相邻选择器 A+B 选中B,如果它紧跟在A后面 h2+p

选择器组

p,h1,h2{} 标签之间直接用逗号隔开,表示多个标签同用此样式

颜色

rgb表示方法

原理:由红蓝绿三原色可以搭配出任意一种颜色

rgb(0,0,0) 三个参数分别是红绿蓝比重

#000000 此方法是用十六进制来输入比重

rgb表示方法.webp

HSL表示法

hsl(h,s,l)

元素 效果
H 调整色彩,0-360
S 调整饱和度,即鲜艳程度,0-100%
L 调整亮度,0-100%

HSL表示法.webp

alpha透明度

#ff0000ff

rgba(255,0,0,1)

hsla(0,100%,50%,1)

以上三种表示方法均是第四个元素来控制透明度,当透明度元素为1(100%)时,背景图片完全遮住,为0时完全显示

alpha透明度.webp

字体

写在CSS中的各标签样式中,以此调整各标签中字体样式

font-family

实质是一个字体家族,按照顺序匹配,如果电脑中没有这个字体就找下一个

fontj-family: Optima,georgia, serif;

通用字体族:

字体 示例
Serif衬线体 Georgia、宋体
Sans-Serif无衬线体 Arial、Heivetica、黑体、微软雅黑
Cursive手写体 Caflisch Script、楷体
Fantasy Comic Sans MS,Papyrus
Monospace等宽字体 Consolas、Courtier、中文字体

通用字体族.webp

使用Web Fonts

<style>
@font-face{
font-family: "Megrim";
src: url(https://fonts.gstatic.com/s/megrim/v11/46kulbz5WjvLqJZVam_hVUdI1w.woff2)
format('woff2');
}
.class1{
font-family: Megrim;
background-color: blue;
}
</style>
<body>
<script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js"></script>
<div id="app">
<label for="r1">点击修改颜色</label><input type="checkbox" v-model="use" id="r1">
<div v-bind:class="{'class1': use}">
v-bing指令
</div>
</div>
<script type="text/javascript">
new Vue({
el: '#app',
data: {
use: false
}
});
</script>
</body>

font-size

作用:设置字体大小

  • 关键字: small、medium、large
  • 长度: px、em
  • 百分数: 相对于父元素字体大小

font-weight:设置字体权重

选择器的特异度

选择器特异度即比较选择器优先使用依据

可用下列计算方法来比较优先度:

  • (#id)优先
  • (.类和伪类)其次
  • (E标签)最后

选择器的特异度.webp

继承

某些属性会自动继承其父元素的计算值,除非显示指定一个值

继承.webp

<p>This is a <em>test</em>of <strong>inherit</strong></p>
<style>
body{
font-size: 20px;
}
p{
color: blue;
}
em{
color: red;
}
</style>

如此例中的标签是

标签的子元素,继承了p标签的颜色属性,p标签继承了body标签的字体大小属性

inherit关键字

inherit 关键字使得元素获取其父元素的计算值。它可以应用于任何 CSS 属性,包括 CSS 简写 all

* {
box-sizing: inherit;
}

html {
box-sizing: border-box;
}
.some-widget {
box-sizing: content-box;
}

在“*{}”中设置所有页面的box-sizing属性可继承,box-sizing属性原本不可继承

初始值

初始值1.webp
初始值2.webp
初始值3.webp

layout布局

  • 常规流布局

    • 行级
  • 块级
  • 表格布局
  • FlexBox
  • Grid布局

  • 浮动
  • 绝对定位

较为重要的是掌握margin属性和padding属性含义及其用法,绝对定位、相对定位等定位方法的使用

布局相关技术1.webp

布局相关技术2.webp

width 属性

  • 指定content box宽度
  • 取值为长度、百分数、auto
  • auto 由浏览器根据其他属性确定
  • 百分数相对与容器的 content box宽度

height属性

  • 指定content box高度
  • 取值为长度、百分数、auto
  • auto 取值由内容计算得来
  • 百分数相对与容器的 content box宽度
  • 容器由指定的高度时,百分数才生效

paddign属性

padding属性为内边距

  • 指定元素四个方向的内边距
  • 百分数相对于容器宽度

padding属性.webp

border属性

border属性指定容器的边框

  • 三种属性
属性 样例
border-width border-width:1px 2px 3px 4px
border-style border-style:solid
border-color border-color:green blue
  • 四个方向
属性 方向
border-top
border-right
border-bottom
border-left

margin属性

margin属性为外边距

  • 指定元素四个方向的外边距
  • 取值可以时长度、百分数、auto
  • 百分数相对于容器宽度

\

当左右都设置为auto时,默认为居中放置

代码

<div><div>
<style>
div {
width: 200px;
height: 200px;
background: coral;
margin-left: auto;
margin-right: auto;
}
<style>

效果

效果.webp

box-sizing属性中的border-box关键字

box-sizing:border-box 使用此关键字,内外边距和元素一体

overflow属性

overflow控制溢出属性,默认为visible

overflow属性.webp

块级&行级

块级 行级
Block Level Box lnline Level Box
不和其他盒子并列摆放 和其他行级盒子一起放在一行或拆开成多行
使用所有的盒模型属性 盒模型中的width、height不适用
块级元素 行级元素
生成块级盒子 1、生成行级盒子2、内容分散在多个行盒(line box)中
body、article、div、卖弄、section、h1-6、p、ul、li等 span、em、strong、cite、code等
display:bolck display:inline

display属性

关键字 效果
block 块级盒子
inline 行级盒子
inline-block 本身时行级,可以放在行盒中;可以设置宽高;作为一个整体不会被拆散成多行
none 排版时完全被忽略

排版上下文

排版上下文.webp

行级

只包含行级盒子的容器会创建一个IFC

行级.webp

overflow-wrap:break-word 超出范围就换行

块级

某些容器会创建一个BFC

块级1.webp
块级2.webp

Flex Box

要父级标签开启flex布局 display:flex,孙系不能用

flex box.webp

justify-content属性

效果
flex-start 从左往右排列(主轴为x)或从上往下排列(主轴为y)
flex-end 从右往左排列(主轴为x)或从下往上排列(主轴为y)
center 居中对齐
space-around 平分剩余空间
space-between 先两边贴边,再平分剩余空间

justify-content.webp

align-items属性

align-items.webp

效果
flex-start 从上到下
flex-end 从下到上
center 垂直居中
stretch 拉伸(默认)

flexibility.webp

flex-grow是分配总比例

flex-grow1.webp

flex-grow2.webp

Grid布局

grid.webp
grid2.webp

position属性

position.webp

position:relative 相对于自己本应该在的位置进行偏倚

position:absolute 相对于最近的非static祖先定位

总结

学习CSS的几个好的习惯

  • 充分利用MDN和W3C CSS规范
  • 保持好奇心,善用浏览器的开发者工具
  • 持续学习,CSS新特性还在不断出现

番外话:个人觉得老师讲的跨度对于我这种小白还是难以接受,所以没有重点记笔记,而是全部写了下来。不可否认的是老师讲的确实很精彩,学习的过程中感触良多,写CSS的思路也是开阔了许多。

这节课的收获:之前学习CSS的时候都是囫囵吞枣,只会照着葫芦画瓢,理解的也不透彻,这节课对于我的意义非常大,深刻的去了解了CSS的使用,包括以前觉得看不懂的、较难的CSS代码都能看懂了,受益良多。

自我扶正:

通过这次整理笔记发现,我平时在上课做笔记的过程中过分依赖于截图就,无论代码还是结论截图完了就了事,这是非常不好的习惯,导致我这次整理笔记发现截图中的内容好像没有见过一样,自己以前上课的时候总是想着截图省时间,不要死敲代码,但是对于我这种记性不好的学者还是用笨方法比较好,谨此检讨

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇