CSS基础

一. float(对块级、行内、内联块元素的影响),如何清除浮动

元素在一行显示

  • 浮动让元素脱离文档流,按照浮动方向移动,遇到父级边界或者相邻浮动元素停住
  • inline_block 支持宽高,但会解析换行符,需去除间隔

浮动带来的问题

  • 父元素的高度无法被撑开,影响与父元素同级的元素
  • 与浮动元素同级的非同级元素(内联元素)会跟随其后
  • 若非第一个元素浮动,该元素之前的元素都需浮动,否则会影响页面结构**

去除inline_block间隔

  • 去掉换行符(不推荐)
  • margin为负值
  • 设置字间距为-npx
  • 设置字体大小为0

去除浮动

  • 为父元素直接设置宽高(子元素高度超过父元素会造成高度崩塌)
  • overflow:hidden 隐藏/scroll 滚动条/auto,hidden可以清除浮动但又有可能隐藏有用的东西(不推荐)
  • style:“clear:both”; 但会加入空标签(不推荐)
  • clearfix 方法
.clearfix:before,.clearfix:after{display:table;content:"";}
.clearfix:after{clear:both;}
.clearfix{*zoom:1}

二. position(五种属性,以及每个属性的特点)

  • relative: 相对定位,相对于正常位置定位
  • absolute:绝对定位,相对于默认定位以外的第一个父元素定位
  • fixed:固定定位,相对于浏览器窗口定位
  • static:默认,元素出现在正常的文档流中
  • inherit:规定元素从父元素上继承position的属性值

三. 选择器的分类及优先级

选择符分类

  • id选择器:id=“name”
  • 类选择器:class=“head”
  • 标签选择器:body,div,p,ul,li
  • 全局选择器:*号
  • 相邻兄弟选择器:div+p
  • 子选择器:div>p
  • 群组选择器:.class,#id
  • 组合选择器:.head .header(有两个类名)
  • 包含选择器:#id .class
  • 继承选择器:div p
  • 后代选择器:name .nav ul li
  • 伪类选择器:链接样式,a元素的伪类,四种状态,link,visited,active,hover

优先级:!important > 行内样式>ID选择器 > 类选择器 > 标签 > 通配符 > 继承 > 浏览器默认属性

CSS3新增选择器

参考网址 CSS选择器

四. display(不可继承)的常见属性,以及每种属性的特点

  • inline:默认为内联元素
  • inheir:继承父级元素的属性值
  • inline-block:内联块元素
  • block:块级元素,元素前后有换行符
  • none:不显示元素

参考网址 display相关属性

五. 常见居中方式(定宽,不定宽,inline,inline-block,block)

目前包括水平居中、垂直居中、水平垂直居中

六. BFC,IFC理解

BFC(Block Formatting Context)块级格式化上下文

定义

  • BFC只是一个独立的渲染区域,决定了元素如何对内容进行定位,以及和其他元素的关系和相互作用。
  • BFC是一个作用范围,在布局上不会影响其他元素

产生机制

  • 根元素
  • float的属性部位none(浮动元素)
  • position为absolute和fixed(绝对定位元素)
  • overflow不为visible
  • display为inline-block、table-cell、flex、inline-flex、 table-caption(非块级盒子中的块级容器)

布局规则

  • 内容的盒子在垂直方向,放置
  • 盒子的垂直方向的距离由margin决定,属于同一个BFC的两个相邻元素的margin会发生重叠;
  • 每个元素的左外边与包含块的左边相接触,浮动元素也是如此;
  • BFC区域不会与float元素重叠;
  • BFC就是页面上的一个隔离的独立容器,容器里的子元素不会影响到外面元素;
  • 计算BFC高度时,浮动元素也计算

作用

  • 包含浮动元素
    • 高度崩塌问题:通常情况下,父元素的高度会被子元素撑开,子元素为浮动元素,所以父元素高度崩塌,上下边界重合,用bfc清除浮动
      子元素浮动,父元素高度崩塌
  • 不被浮动元素覆盖
    • div浮动遮盖问题:由于左侧元素发生了浮动,所以和右侧未发生浮动的块级元素不在同一层,就会发生遮挡问题
    • 由于ie的原因需要再加一个解发hasLayout的zoom:1
  • 阻止外边距重叠
    - margin塌陷问题:在标准文档流中,块级标签之间的竖直方向margin会以大的为准
    外边距重叠
    - 可使用overflow:hidden产生bfc解决
  • Layout 与css bug有关
    • 是IE浏览器渲染引擎的内部组成部分,一个元素要么自己对自身的内容进行计算大小和组织,要么依赖父元素计算,渲染引擎采用hasLayout属性(判断是否有layout),值为true时,元素有布局(layout)

IFC(inline Formatting Context)行内格式化上下文

定义

  • 能把在一行上的框都包含进去的一个矩形区域,称为行框
  • IFC对外表现为块级元素,与DIV垂直排列

布局规则

  • 框一个接一个水平排列,起点是包含块的顶部
  • 水平方向的margin、border和padding在框之间得到保留,在垂直方向上会以不同形式来对齐,它们可能会把底部或顶部对齐,也可能把内部的文本基线对齐,不能指定宽高
  • 行宽的宽度是由包含块和存在的浮动来决定,行框的高度由行高来计算

主要影响IFC内布局的css

  • font-size:用来指定文本类型节点的大小
  • line-height:为内联元素的行盒模型指定有一个最低高度
  • height
  • vertical-aligin:由多个内联元素生成的盒模型组成的行内盒模型的垂直定位

容器的高度 height = line-height + vertical-align

作用

  • 水平居中:当一个块要在环境中水平居中时,设置其为inline-block则会在外层产生IFC,通过text-align则可以使其水平居中。
  • 垂直居中:创建一个IFC,用其中一个元素撑开父元素的高度,然后设置其vertical-align:middle,其他行内元素则可以在此父元素下垂直居中。

CSS3新增

GFC (Gridlayout Formatting Contexts) 网格布局格式化上下文

  • display为grid,在网格容器定义网格行和网格列
  • 相比table,有更加丰富的属性来控制行列和对齐

FFC (Flex Formatting Contexts)自适应格式化上下文

  • display 为flex(渲染为块级元素)或inline-flex(渲染为行内元素) 可以得到一个伸缩容器
  • 每个子元素都是一个伸缩项目Flexbox定义了伸缩容器内伸缩项目该如何布局

参考网址 格式化上下文理解 浅谈BFC及其作用 hasLayout 介绍

七. 两栏布局,三栏布局(圣杯布局、双飞翼布局)

两栏布局

布局如下所示:

<div id="content">
	<div class="left">
</div>
	<div class="right"></div>
</div>

方法一:margin实现布局(一侧宽度固定,一侧自适应)

#content{
	background-color: #ccc;
}
.left{
	width: 100px;
	height: 800px;
	backgroundColor: red;
	float: left;
}
.right{	
	height: 800px;
	margin-left: 100px;
}

方法二:利用定位来设置

.left{
	width: 100px;
	height: 800px;
	background-color: red;
		
}
.right{
	height: 800px;
	background-color: green;
	position: absolute;
	left: 100px;
}

方法三:使用flex布局

.left{
	width: 100px;
	height: 800px;
	background-color: red;
	
		
}
.right{
	height: 800px;
	background-color: green;
	flex: 1;
		
}

圣杯布局(两边固宽,中间自适应)

布局如下所示:

<div class="main"></div>
<div class="left"></div>
<div class="right"></div>

CSS代码

body,html{
	height: 100%;
	padding: 0;
	margin: 0;
}
body{
	background-color: #ccc;
	padding-left: 100px;
	padding-right: 200px;
		
}
.main{
	float: left;
	width:100%;
	height: 100%;
	background-color: red;
	
}
.left{
	width: 100px;
	height: 100%;	
	float: left;
	background-color: green;
	margin-left: -100%;
	position: relative;
	left: -100px;
}
.right{
	float: left;
	width: 200px;
	height: 100%;
	background-color: yellow;
	margin-left: -200px;
	position: relative;
	right: -200px;
	
}

双飞翼布局

  • 与圣杯布局的区别是:圣杯布局用padding给左右元素留位置,而双飞翼是给中间元素设置子元素,用margin留位置,不用给左右元素定位

修改布局:

<div class="main">
	<div class="inner"></div>
</div>

CSS:

.inner{
	margin-left:100px;
	margin-right:200px;
}

浮动和定位也可实现三栏布局

八. 如何隐藏一个元素

  • display:none ;( 不占位置)
  • visibility:none; (占位置)
  • margin负值
  • opacity:1;(透明度 css3)
  • 拿一个白色div盖住
  • 定位 position left,top
  • width/height

九. 自适应布局

  • 自适应的目的是在不同分辨率的不同设备上面显示相同的页面
  • “一次设计,普遍适用”,让同一张网页自动适应不同大小的屏幕,根据屏幕的宽度,自动调节网页的内容大小

响应式布局

  • 响应式布局可以根据屏幕的大小自动的调整页面的展现方式,以及布局。

  • 响应式布局的一些技术点纪录:

  • 允许网页的宽度自动的调整

  • 尽量少使用绝对的宽度,多点百分比

  • 相对大小的字体:字体不要使用px写死,最好使用相对大小的em,或者高清方案rem

  • 流式布局,float等float的好处是,如果宽度太小,放不下两个元素,后面的元素会自动滚动到前面元素的下方,不会在水平方向overflow(溢出),避免了水平滚动条的出现

  • 选择加载css,屏幕宽度小于400像素,就加载文件

     ```
     <link rel="stylesheet" type="text/css" media="screen and (max-device-width: 400px)" href="tinyScreen.css" />
     
     ```
    

十. CSS实现多种图案

轮播图
布局

<div class="container">
    <div class="photo">
        <img src="img/love.jpg" />
        <img src="img/xin.jpg" />
        <img src="img/pink.jpg" />
        <img src="img/nong.jpg" />
        <ul id="dis">
                <li>1</li>
                <li>2</li>
                <li>3</li>
                <li>4</li>
        </ul>
    </div>
</div>

css

.container{
	width: 300px;
	height: 600px; 	
	overflow: hidden;
	position: relative;
}
.photo{
	width: 1200px;
	height: 600px; 	
	position:absolute;
	left:0;
	animation-name:autoplay;
	animation-duration: 12s;
	
}
.photo img{
	float: left;
	width: 300px;
	height: 600px;
	}
@keyFrames autoplay{
	0%,25%{
		left: 0;
		}
	30%,55%{
		left: -300px;
		}
	60%,85%{
		left: -600px;
		}
	90%,100%{
		left: -900px;
		}

	}
#dis{
	position:absolute;
	left:-50px;
	top:-10px;
	opacity:.5
	}
#dis li {
	display:inline-block;
	width:200px;
	height:20px;
	margin:0 50px;
	float:left;
	text-align:center;
	color:#fff;
	border-radius:10px;
	background:#000
}

参考网址 纯CSS绘制各种图形

十一. CSS3新特性(主要CSS3动画)
参考网址 CSS新特性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值