CSS基础笔记

目录

  1. 简介
  2. 注释
  3. CSS代码插入方法
  4. 选择器
  5. 字体
  6. 文本
  7. 长度值
  8. 元素分类
  9. 盒子模型
  10. css布局模型
  11. 弹性盒模型之flex属性
  1. 简介
  • CSS全称为“层叠样式表 (Cascading Style Sheets)”
  • 样式定义如何显示 HTML 元素
  • 样式通常存储在样式表中,CSS文件
  • 解决内容与表现分离的问题
  • 外部样式表可以极大提高工作效率
  1. 注释
/*注释内容*/
  1. CSS代码插入方法
    从CSS 样式代码插入的形式来看基本可以分为以下3种:内联式、嵌入式和外部式 三种。
  • 内联式css样式,就是把css代码直接写在现有的HTML标签中,如下面代码:
<p style="color:red;font-size:12px">这里文字是红色。</p>
  • 嵌入式css样式,就是可以把css样式代码写在<style type="text/css"></style>标签之间,并且一般情况下嵌入式css样式写在<head></head>之间
<style type="text/css">
span{
color:red;
}
</style>
  • 外部式css样式(也可称为外联式)就是把css代码写一个单独的外部文件中,这个css样式文件以“.css”为扩展名,在<head>内(不是在<style>标签内)使用<link>标签将css样式文件链接到HTML文件内,如下面代码:
<link href="base.css" rel="stylesheet" type="text/css" />

优先级:内联式 > 嵌入式 > 外部式
但是嵌入式>外部式有一个前提:嵌入式css样式的位置一定在外部式的后面。
总结来说,就是就近原则(离被设置元素越近优先级别越高)。

  1. 选择器


    CSS 语法
  • 标签选择器
p{font-size:12px;line-height:1.6em;}
  • 类选择器
.center {text-align: center}

其中类选器名称可以任意起名(但不要起中文噢)

  • id选择器
#red {color:red;}

注意:id 属性只能在每个 HTML 文档中出现一次,并且仅有一个。

<p id="red">这个段落是红色。</p>
<span class="stress bigsize">三年级</span>
  • 子选择器
    即大于符号(>),用于选择指定标签元素的第一代子元素。
.food>li{border:1px solid red;}
  • 后代选择器
    后代选择器作用于所有子后代元素
.first  span{color:red;}
  • 通用选择器
    html中所有标签元素
* {color:red;}
  • 伪类选择器
a:hover{color:red;}

a:link {color: #FF0000} /* 未访问的链接 /
a:visited {color: #00FF00} /
已访问的链接 /
a:hover {color: #FF00FF} /
鼠标移动到链接上 /
a:active {color: #0000FF} /
选定的链接 */

hover最常用,可以兼容所有浏览器

  • 分组选择器
h1,h2,h3,h4,h5,h6 {
  color: green;
  }
  • 继承及其问题
    根据 CSS,子元素从父元素继承属性。

  • 选择器的优先级

选择器的优先级依次是: 内联样式 > id选择器 > 类选择器 > 标签选择器 > 通配符选择器

  • 权值计算-特殊性
    标签的权值为1,类选择符的权值为10,ID选择符的权值最高为100。
    有些特殊的情况需要为某些样式设置具有最高权值,
p{color:red!important;}
p{color:green;}
<p class="first">三年级时,我还是一个<span>胆小如鼠</span>的小女孩。</p>

注意:!important要写在分号的前面

  1. 字体
p
  {
  font-family: "Times New Roman",Georgia,Serif;
  /* 如果浏览器不支持第一个字体,则会尝试下一个*/
  font-size: 12px;  
  font-weight:bold;
 /*
  normal    默认值。定义标准的字符。
  bold  定义粗体字符。
  bolder    定义更粗的字符。
  lighter   定义更细的字符。
  inherit   规定应该从父元素继承字体的粗细。*/
  font-style:normal;
  /* 
  normal    默认值。浏览器显示一个标准的字体样式。
  italic    浏览器会显示一个斜体的字体样式。
  oblique   浏览器会显示一个倾斜的字体样式。
  inherit   规定应该从父元素继承字体样式。*/
  color:red;
  /*
  color:rgb(133,45,200);
  color:rgb(20%,33%,25%);
  p{color:#00ffff;*/
  line-height:1.5em; /*行间距*/
  font:italic  bold  12px/1.5em  "宋体",sans-serif;
  /*简写
  1.使用这一简写方式你至少要指定 font-size 和 font-family 属性,
其他的属 性(如 font-weight、font-style、font-variant、line-height)
如未指定将自动 使用默认值。
 2.在缩写时 font-size 与 line-height 中间要加入“/”斜扛。
 3.常用
  body{
    font:12px/1.5em  "宋体",sans-serif;
  }*/
  }
  1. 文本
p {

  text-indent: 5em;
/*缩进文本,可为负数*/
  padding-left: 5em;
/*果对一个段落设置了负值,那么首行的某些文本可能会超出浏览器窗口的左边界*/
text-indent: 20%;
/*将缩进值设置为 20%,所影响元素的第一行会缩进其父元素宽度的 20%。*/
text-decoration:underline;
/*
none    默认。定义标准的文本。
underline   定义文本下的一条线。
overline    定义文本上的一条线。
line-through    定义穿过文本下的一条线。
blink   定义闪烁的文本。
*/
line-height:90%;/*行高*/
word-spacing:25px;/*字/单词间距*/
letter-spacing:25px;/*字母间距*/
text-align:center;
/*
left    把文本排列到左边。默认值:由浏览器决定。
right   把文本排列到右边。
center  把文本排列到中间。
justify 实现两端对齐文本效果。*/
white-space: normal;
/*
normal  默认。空白会被浏览器忽略。
pre 空白会被浏览器保留。其行为方式类似 HTML 中的 <pre> 标签。
nowrap  文本不会换行,文本会在在同一行上继续,直到遇到 <br> 标签为止。
pre-wrap    保留空白符序列,但是正常地进行换行。
pre-line    合并空白符序列,但是保留换行符。*/
direction: rtl;
/*
ltr 默认。文本方向从左到右。
rtl 文本方向从右到左。*/
text-transform:uppercase;
/*
none    默认。定义带有小写字母和大写字母的标准的文本。
capitalize  文本中的每个单词以大写字母开头。
uppercase   定义仅有大写字母。
lowercase   定义无大写字母,仅有小写字母。*/
}
  1. 长度值
  • 像素px
    相对单位,指的是显示器上的小点,目前大多数的设计者都倾向于使用像素(px)作为单位。
  • em
    给定字体的 font-size 值,如果元素的 font-size 为 14px ,那么 1em = 14px;
  • 百分比%
p{font-size:12px;line-height:130%}

设置行高(行间距)为字体的130%(12 * 1.3 = 15.6px)。

  1. 元素分类

常用的块状元素有:
<div>、<p>、<h1>...<h6>、<ol>、<ul>、<dl>、<table>、<address>、<blockquote> 、<form>

常用的内联元素有:
<a>、<span>、< br>、<i>、<em>、<strong>、<label>、<q>、<var>、<cite>、<code>

常用的内联块状元素有:
<img>、<input>

  • 设置display:block可以将元素显示为块级元素。
a{display:block;}

块级元素特点:
1、每个块级元素都从新的一行开始,并且其后的元素也另起一行。(真霸道,一个块级元素独占一行)
2、元素的高度、宽度、行高以及顶和底边距都可设置。
3、元素宽度在不设置的情况下,是它本身父容器的100%(和父元素的宽度一致),除非设定一个宽度。

  • 通过代码display:inline将元素设置为内联元素。
 div{display:inline;}
......
<div>我要变成内联元素</div>

内联元素特点:
1、和其他元素都在一行上;
2、元素的高度、宽度及顶部和底部边距不可设置;
3、元素的宽度就是它包含的文字或图片的宽度,不可改变。

  • 内联块状元素(inline-block)就是同时具备内联元素、块状元素的特点,代码display:inline-block就是将元素设置为内联块状元素。<img>、<input>标签就是这种内联块状标签。

inline-block 元素特点:
1、和其他元素都在一行上;
2、元素的高度、宽度、行高以及顶和底边距都可设置。

  • none设置此元素不会被显示,当想要元素隐藏的时候可以使用此值。
 div{display:none;}
  1. 盒子模型


    CSS 框模型

提示:背景应用于由内容和内边距、边框组成的区域。

  • 内边距padding
padding:10px 5px 15px 20px;
上内边距是 10px
右内边距是 5px
下内边距是 15px
左内边距是 20px

padding:10px 5px 15px;
上内边距是 10px
右内边距和左内边距是 5px
下内边距是 15px

padding:10px 5px;
上内边距和下内边距是 10px
右内边距和左内边距是 5px

padding:10px;
所有 4 个内边距都是 10px

  • 外边距margin
    类似padding

  • 背景

div{background-color:red;}//为块状元素设置
a{background-color:green;}//为行内元素设置
  • 边框 border
div{ border:2px  solid  red;}
div{
    border-width:2px;
    border-style:solid;
    border-color:red;
}
注意:
1、border-style(边框样式)常见样式有:
dashed(虚线)| dotted(点线)| solid(实线)。

2、border-color(边框颜色)中的颜色可设置为十六进制颜色,如:
border-color:#888;//前面的井号不要忘掉。

3、border-width(边框宽度)中的宽度也可以设置为:
thin | medium | thick(但不是很常用),最常还是用像素(px)。

div{
  border-bottom:1px solid red;
  border-top:1px solid red;
  border-right:1px solid red; 
  border-left:1px solid red;

div{border-radius: 20px 10px 15px 30px;}  //设置圆角
div{
    border-top-left-radius: 20px;
   border-top-right-radius: 10px;
   border-bottom-right-radius: 15px;
   border-bottom-left-radius: 30px;
}
div{ border-radius:10px 20px;}
//左上角和右下角圆角效果一样为10px,右上角和左下角圆角一样为20px
}
  1. css布局模型
  • 流动模型(Flow)
    流动(Flow)是默认的网页布局模式

第一点,块状元素都会在所处的包含元素内自上而下按顺序垂直延伸分布,因为在默认状态下,块状元素的宽度都为100%。实际上,块状元素都会以行的形式占据位置。如右侧代码编辑器中三个块状元素标签(div,h1,p)宽度显示为100%。
第二点,在流动模型下,内联元素都会在所处的包含元素内从左到右水平分布显示。(内联元素可不像块状元素这么霸道独占一行)

  • 浮动模型 (Float)
    设置元素浮动 float:left;就可以实现两个块状元素并排显示
  • 层模型(Layer)
    1、绝对定位(position: absolute)

作用将元素从文档流中拖出来,然后使用left、right、top、bottom属性相对于其最接近的一个具有定位属性的父包含块进行绝对定位。如果不存在这样的包含块,则相对于body元素,即相对于浏览器窗口。

2、相对定位(position: relative)

通过left、right、top、bottom属性确定元素在正常文档流中的偏移位置。相对定位完成的过程是首先按static(float)方式生成一个元素(并且元素像层一样浮动了起来),然后相对于以前的位置移动,移动的方向和幅度由left、right、top、bottom属性确定,偏移前的位置保留不动(以前的位置依旧占据)。

3、固定定位(position: fixed)

与absolute定位类型类似,但它的相对移动的坐标是视图(屏幕内的网页窗口)本身。
与background-attachment:fixed;属性功能相同。

相对于其它元素进行定位

<div id="box1"><!--参照定位的元素-->
    <div id="box2">相对参照元素进行定位</div><!--相对定位元素-->
</div>
参照定位的元素必须加入position:relative;
#box1{
    width:200px;
    height:200px;
    position:relative;        
}
#box2{
    position:absolute;
    top:20px;
    left:30px;         
}
  1. 弹性盒模型
  • display: flex
    在父容器中添加flex。

1、设置display: flex属性可以把块级元素在一排显示。
2、flex需要添加在父元素上,改变子元素的排列顺序。
3、默认为从左往右依次排列,且和父元素左边没有间隙。

  • justify-content设置横轴排列方式
    本属性定义了项目在主轴上的对齐方式。

justify-content: flex-start | flex-end | center | space-between | space-around;
flex-start:交叉轴的起点对齐
flex-end:右对齐
center: 居中
space-between:两端对齐,项目之间的间隔都相等。
space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。

 .box {
        background: blue;
        display: flex;
        justify-content: flex-start;
    }

  • align-items设置纵轴排列方式

align-items: flex-start | flex-end | center | baseline | stretch;
flex-start:默认值,左对齐
flex-end:交叉轴的终点对齐
center: 交叉轴的中点对齐
baseline:项目的第一行文字的基线对齐。
stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。

   .box {
        height: 700px;
        background: blue;
        display: flex;
        align-items: flex-start;
    }
  • flex
    1、给子元素设置flex属性,可以设置子元素相对于父元素的占比。
    2、flex属性的值只能是正整数,表示占比多少。
    3、给子元素设置了flex之后,其宽度属性会失效。
  1. CSS小技巧
  • 水平居中设置

1、行内元素
如果被设置元素为文本、图片等行内元素时,水平居中是通过给父元素设置 text-align:center 来实现的。
2、定宽块状元素
通过设置“左右margin”值为“auto”来实现居中的。

  • 面试常考题之已知宽高实现盒子水平垂直居中

1、利用父元素设置相对定位,子元素设置绝对定位,那么子元素就是相对于父元素定位的特性。
2、子元素设置上和左偏移的值都为50%,是元素的左上角在父元素中心点的位置。效果:


3、然后再用margin给上和左都给负的自身宽高的一半,就能达到垂直水平居中的效果。

  • 面试常考题之宽高不定实现盒子水平垂直居中
    通常使用定位以及translate完成
 .box {
        border: 1px solid #00ee00;
        height: 300px;
        position: relative;

    }

    .box1 {
        border: 1px solid red;
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
    }

1、利用父元素设置相对定位,子元素设置绝对定位,那么子元素就是相对于父元素定位的特性
2、子元素设置上和左偏移的值都为50%。
3、然后再用css3属性translate位移,给上和左都位移-50%距离,就能达到垂直水平居中的效果。

©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,869评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,716评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,223评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,047评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,089评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,839评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,516评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,410评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,920评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,052评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,179评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,868评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,522评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,070评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,186评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,487评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,162评论 2 356