前端自学之路(CSS)

115 阅读7分钟

CSS规则由两部分组成:选择器+声明 声明包括 属性:值

image.png

CSS书写位置

1 内嵌式,

顾名思义,内嵌式就是直接嵌在html文件中。

就是在标签对中,写标签对,然后在标签对中写CSS语句。

  • image.png
2 外链式
  • 所谓外链式,就是把CSS代码保存在单独的.css文件中,然后用标签引入这个文件。 <link rel =''stylesheet'' href=''css/css.css''>

外链式的优点:多个HTML文件,可以共用一个CSS样式表文件。 在.css文件中写css代码,就不需要写style标签了,直接写css语句就行了。

3 导入式

注意:页⾯被加载时,link 会同时被加载,⽽ @import 引⽤的 CSS 会等到页⾯被加载完再加载 <style> @import url(css/style.css)</style>

4 行内式

直接写在标签上 <h1 style="color: red;">自学之路CSS</h1>

常用选择器

1 标签选择器,

也称为元素选择器

h1{ color:red }

所有html标签都可以看成盒子,有 border 边框 padding 内边距,height高度

width宽度

2 id选择器

id 选择器可以为标有特定 id 的 HTML 元素指定特定的样式。
HTML元素以id属性来设置id选择器,CSS 中 id 选择器以 “#” 来定义

#box{width: 200px; height: 200px; background-color: black; color: white;}

<div id='box'> </div>

3 class选择器
.box{width: 200px; height: 200px; background-color: black; color: white;}

<div class='box'> </div>

4 通配符选择器

在css中,通配符选择器使用“ * ”定义,它表示所有的元素。
它的书写规范是
* { 属性: 属性值; }

5 复合选择器

在css中,复合选择器是建立在基础选择器上,对基本选择器进行组合形成的。

  • 复合选择器可以更准确,更有效地选择目标元素。
  • 复合选择器由两个或多个基础选择器通过不同的方式结合
6 并集选择器

并集选择器可以选择多组标签,将他们同时定义成相同的样式。
书写规范为

元素1,元素2 {
样式声明
}

  • 注意各个元素之间需用 , 隔开,但最后一个元素后不需要加逗号。
7 链接伪类选择器

伪类是用户赋予的,像点击,悬浮。。。。

a:link, 初始状态

a:hover,鼠标划过状态

a:visited,被点击后的状态

a: active,鼠标按下去时的状态

注意书写的顺序

a:link {

            color: red;

            /* font-size: 50px; */

        }

伪元素 无中生有

::before

::after

a::before {

            content: "☆";

        }

        a::after {

            content: "❤";

        }

CSS display属性

块级元素

  • 1.对于块级元素display默认值为:block;
  • 2.块级元素:占据一定矩形空间,可以通过设置高度、宽度、内外边距等属性,来调整的这个矩形;
  • 3.常用的块状元素有:<div>、<p>、<h1>...<h6>、<ol>、<ul>、<dl>、<table>、<address>、<form>;
  • 4.块级元素特点:
  • 5.每个块级元素都从新的一行开始,并且其后的元素也另起一行。(真霸道,一个块级元素独占一行);
  • 6.元素的高度、宽度、行高以及顶和底边距都可设置;
  • 7.元素宽度在不设置的情况下,是它本身父容器的100%(和父元素的宽度一致),除非设定一个宽度;

行内元素

  • 1.对于行内元素display默认值为:inline;
  • 2.行内元素 :自己的独立空间,它是依附于其他块级元素存在的,因此,对行内元素设置高度、宽度、外边距等属性,是无效的;
  • 3.常用的行内元素有:<a>、<span>、<br>、<i>、<em>、<strong>、<label>、<q>、<var>、<cite>、<code>;
  • 4.行内元素特点:
  • 5.和其他行内元素在同一行上;
  • 6.元素的高度、宽度及顶部和底部外边距不可设置;
  • 7.元素的宽度就是它包含的文字或图片的宽度,手动设置无效;

行内块元素

将元素设置为inline-block时,被隐藏的元素会变为行内块元素并显示; inline-block既具有block的宽高特性又具有inline的同行元素特性。 通过inline-block结合text-align: justify 还可以实现固定宽高的列表两端对齐布局; 转换:

display:block转为块级元素

display:inline转为行内元素

display:inline-block转为行内块级元素

元素隐藏;display:none

float浮动

  • 概念:最本质功能实现 并排,初衷实现文字环绕图片效果

  • 使用要点:要浮动,并排的盒子都要浮动

  • 父盒子要有足够的宽度,否自盒子会掉出去,

  • 垂直的盒子不要设置浮动,只有并排的盒子才要设置浮动,

  • 大盒子带着小盒子跑,浮动没有继承,即是大盒子内部可以继续浮动,

  • 不要怕使用大盒子div

  • 清除浮动带来的影响 的知识;

  • 基本方法:1浮动元素底部插入 clear :both;

  • 2父元素BFC,设置overflow:hidden( IE8+; 高级浏览器特有的概念);或haslayout(IE6 / IE7)

  • float使元素的display block化,即砌砖头,固定尺寸,加浮动属性;容易出问题,

定位

相对定位

盒子可以相对原来的位置进行调整,老家留坑,

新位置不过是影子

position: retivle;

top:10px;

left:10px

绝对定位

盒子以坐标进行位置精准描述,拥有自己绝对的位置

绝对定位的元素脱离标准文档流,对其他元素不会产生干扰,而是对他们进行压盖

position:absolute;

堆叠顺序 z-index属性 没有单位的正整数,数值大的压盖数值小的

绝对定位用来制作 压盖 遮罩效果;结合css精灵图使用;结合js实现 动画效果

固定定位:position:fixed

以页面为参考点,应用场景 返回顶部;楼层导航等等,脱离标准文档流

边框 border属性

border属性,三个要素

border:1px solid red 分别是 线宽度,线型,线颜色

线型,实线solid,虚线dashed,点状线dotted 等等

上下左右   border-top: ;等等

border radius:50% 圆形

值若为宽度的一半为胶囊型

盒子阴影

box-shadow :10px 20px 30px ragb()

分别表示 x轴 y轴 模糊量 颜色

内阴影 在值的前面加 inset

过渡属性和旋转

transition为一个元素在不同样式之间变化自动添加 补间动画

如,一个正方形变成一个圆形中间的变化

transition属性四个要素

transition:width 1s linear 0s;

四个要素分别是 :属性;动画总时长带单位s 仅有这个单位s;

变化速度的曲线;延迟时间。

所有数值类型的属性都可以参与过渡,如,width,

height,left,top ,border-radius,背景颜色和文字颜色都可以被过渡

所有的变形含2d3d都能过渡

如果所有属性都要变化 用all

/* transform: rotate(45deg);旋转变形 45度 */

            /* transform-origin: 0 0;自定义设置变形的原点,这里表示以左上角为原点,结合 transform使用*/

            /* transform: scale(3);缩放变形,括号里面是倍数 */

            /* transform: skew(10deg,20deg);斜切变形 */

            /* transform: translate(100px,200px);位移变形,这里表示向右移动100px;向下移动200px;             与相对定位有点相似 */

margin外边距

  • margin是 盒子与盒子之间的距离

  • 标准流中,容易出现外边距合并,导致父盒子移动(倒塌)

  • 解决方法:给父盒子添加边框,或给父盒子添加内边距,

  • 或给父盒子添加overflow:hidden

padding 内边距

  • padding是盒子的内边距, 即是盒子 到文字的距离;有上下左右四个方向指定填充

  • 水平paddiin值影响尺寸,垂直padding值不影响尺寸,但会影响背景颜色(占据空间)

  • 应用场景:高度可控的分隔线

  • paddiing不支持负值,可百分比,是相对于宽度计算,

  • 遇到装文字 的字数不一样的,不设置宽度,统一给一个padding,会撑开盒子;

  • 不会撑开盒子的情况:没有设置宽度/高度