HTML+CSS第一部分_03(盒子模型、标签分类、边框类型、溢出隐藏、透明度、手势、最大最小宽、默认样式及其重置、浮动、定位、雪碧图、圆角)

(12) css盒子模型

1.组成及其基本属性

组成: content   ->   padding   ->   border   ->  margin
            整个容器    内边距        边框        外边距
                      (边框与数据距离)      (两个盒子之间距离)

在这里插入图片描述

	content: 设置容器大小,背景颜色,文字颜色
	padding:  设置外边距的属性(不可为负数)
	方法一 :
			 Padding  30px;    			上下左右都是30px
			 Padding  30px  40px		上下是30px  左右是40px
			 Padding  30px 40px 50px 60px  依次设置上下左右
	 方法2:
			padding-left   padding-right  padding-top  padding-bottom
		    Border:    设置边框大小颜色(上面讲过)
			Margin:   设置外边距:(可为负数)
	方法一 :
			 margin   30px;    		       上下左右都是30px
			 margin   30px  40px		   上下是30px  左右是40px
			 margin   30px 40px 50px 60px  依次设置上下左右
	 方法2:
			margin-left   margin-right  margin-top  margin-bottom
	注意:
			1.背景颜色会填充到边框上,有的时候只是被边框颜色遮住了
			2.文字等数据在content添加
			3.内边框不可为负数、外边框可为负数
 <style>
     #box{
         width: 200px;height: 200px;background-color: brown;
         border: 10px  solid turquoise;
         padding: 30px;
         margin: 10px;
     }
 </style>

2.盒子的属性

	box-sizing:           盒子尺寸:可以改变盒子模型的展示状态(2种状态可选择)
	content-box(默认值):	width、height -->content(宽和高只决定边框大小)
	Border-box:     	   width、height-->content,padding,border(决定三个)
	
选择Border-box:填写文字的区域已经计算好(不需要在用(总-边框-内边距)进行计算)

使用场景:
		1.不用再计算一些值
		2.解决一些百分比的问题
	#box{
         width: 200px;height: 200px;background-color: brown;
         border: 10px  solid turquoise;
         padding: 30px;
         box-sizing: border-box;   //设置为border-box状态
     }

3.盒子的margin叠加问题:

1、
	这个问题只存在上下有,左右是没有叠加问题的
	两个盒子之间的间距不会出现累加问题,只是重叠(比如说:上面盒子外下边距为30px,下面盒子外上边距为20px,实际的体现效果两个盒子之间的间距为30px)
	两个盒子同时纯在外边距时,会取较大的一个外边距(不论正负)
2、
	不想让其叠加,想让其累加,怎么办??

两种解决方案:
	1:BFC规范
	2:只给一个盒子添加边距,不同时给两个盒子添加边距

4.盒子模型之margin传递问题

	margin传递问题只会出现在嵌套的结构中,且只有margin-top(上边距)会有传递问题,其他三个方向不会有传递问题:
<style>
        #div1{width: 100px;height: 100px;background-color: burlywood;}
        #div2{width: 30px;height: 30px;background-color: darkblue;margin-top: 70px;}
</style>

 <div id="div1">
            <div id="div2"></div>
</div>


结果发现:
给里面嵌套的盒子,会把最外层的盒子位置带下去:
三种解决方案:
	1:BFC规范
	2:给父类容器加边框
	3:给外层容器加padding(内边距)

5.盒子模型的扩展

1.
给margin-left或者margin-right设置值可以左右移动
		 margin-left:auto  margin-right:auto  左右都设为自适应----->会居中
		 或者
		margin: 0 auto  上下边距为0,左右为auto
		(上下就算设置auto也不会自适应,css设计的时候考虑到页面会有滑动条,没有对上下自适应设置:---->在新版的css中已经有了解决方法)
2.
当不设置宽度的时候,会自动的根据父类(无父类时整个容器)计算盒子的大小,节省代码
<style>
        #div1{width: 100px;height: 200px;background-color: burlywood;}
        #div2{height: 100px;background-color: darkblue;}
    </style>

<div id="div1">
            <div id="div2"></div>
/div>

结果:
在这里插入图片描述

(13) 标签的分类

1、按类型划分
Block(块):  div  p  ul   li  h1.....
		1.独占一行
		2.支持所有的样式
		3.不写宽的跟父类的宽相同
		4.所占区域是一个矩形区域
Inline(内联): span   a  em  strong  img ....
		1.挨在一起的
		2.一些样式不支持(width、height等等有些标签不支持)
		3.不写宽的时候由内容决定
		4.所站的区域不一定是矩形
		5.内联标签之间会有空隙(应为两个内联标签没写正在一行引起的)
Inline-block(有块和内联的特性): input  select........
		1.挨在一起,但支持宽高
2、按内容进行分类:

在这里插入图片描述

3、按显示分类:
替换元素:img  input......(把地址换为真实的图片)
非替换元素:div  h1  p .........

(14)显示框类型

display属性:                        设置框架类型
		可设置的值有:
				Block   块的形式
				Inline   内联的形式
				Inline-block	块+内联
				None     隐藏


列1:

<style>
        div{width: 100px;height: 100px;background-color: darkturquoise;display: inline;}
</style>
//把div的显示框设为内联式,该div的宽和高就不会显示出来

列2:

<style>
    div{width: 100px;height: 100px;background-color: darkturquoise;display: inline-block;}
    span{width: 100px;height: 100px;background-color: blue;display: inline-block;}
</style>
<div>123</div>           
    <div>123</div>
    <span>123</span>
    <span>123</span>
 //结果:

在这里插入图片描述

//把div和span两个标签样式都声明为内联+块的模式
所以div会具有一行可多个显示
所以span会具有宽高的属性

(15)标签的嵌套规范

1.快标签可以嵌套内联标签
2.快标签不一定能嵌套快标签(p里面有div)
3.内联标签不能嵌套块标签(a标签是个例外,比如:a标签里面有div)

(16)溢出隐藏

当文本内容超出容器的大小时,会出现文本内容超出容器
 overflow属性:                    提供了多个可选择项
			visible    默认值,直接溢出容器
			hidden    根据容器大小剪切文本内容
			scroll      在容器上加滚动条
			auto      自适应(文本内容较少时不加滚动条,较多加)
 overflow-x:     只对x轴设置 
 overflow-y:     只对y轴设置

(17)透明度

  Opacity:  0(通明) ~  1(不透明)         设置整个容器所有的东西的通明程度
				 0.5半通明

  rgba(红,蓝,绿色,通明程度)       设置当属性颜色的时候设置透明度
  		( 比如在设置背景颜色的时候rgba只会改变背景颜色 的透明度)

(18)手势

1.怎么设置手势

当鼠标表移动到该容器上时候的鼠标样式
	Cursor :       设置手势
	有多种选项:
			default   默认样势(箭头)
			pointer   手型
			move     移动
			help      帮助
			自定义鼠标样式
			......

2. 怎么实现自定义鼠标手势??

准备图片: .ico 或者 .cur 格式的图片
格式   cursor: url(图片路径) , auto;

(19)最大最小宽高

 容器中的内容不管多少,容器的宽高不会变
 最小宽高:内容再小,也会保持该宽高
 最大宽高;内容再多,宽高最大为该值
    min-width:          最小宽度
	min-height:  		   最小宽度
	max-width:          最大高度
	max-height:         最大高度
<style>
        div{width: 300px;height: auto;border: 2px black solid;}
</style>
宽度一定,高度自适应(就算不写高度自适应--->默认也是)

一个容器怎么适应屏幕的高???
html,body{ height:100%}
.div1{height:100%}

(20)css的默认样式

   可通过浏览器的调试台,查看默认样式
		没有默认样式的:  div  span
		有默认样式的:
				body  --> margin: 8p
				h1    -->margin:上下21.440px
				font-weight:bold
				p     -->margin:上下16px
				Ul    -->margin:上下16px   padding: 左40px
				默认点:list-style:disc
				a     --> text-decoration:underline

(21)常见的css重置样式

(1)*{margin: 0px;padding:0px}
		优点:不用考虑那些标签有默认的margin和padding
		缺点:稍微影响性能
    或者body,p,h1,ul{margin: 0px;padding:0px}只改变一部分标签
    
(2)ul{list-style:none}

(3)img{display: block;}
		问题的现象:图片和底部容器有一定的间隙
		产生的原因:内联元素是按照文字的基线对齐,而不是按文字底线对齐
		解决方法:img{vertical-align: bottom;}或者img{display: block;}转为块

(22)float浮动

文档流??
		块从上到下,内联从从左到右
		
float浮动??
		脱离文档流(不会改变容器的大小),只是沿着父容器靠左或者靠右依次进行排列;
		(块一定和块挨着,浮动写在块后面和块挨着,否则浮动挨着浮动)
		(后面块直接忽略前面块的位置,找到上一个块挨着 )
		float:          设置float浮动
		 	 可选值:
				left     左移动
				right    右移动
<style>
       .div{width: 100px;height: 100px;background-color: brown;}
        .div1{width: 200px;height: 200px;background-color: black;float: left;}
        .div2{width: 300px;height: 300px;background-color: blue;}
        .div3{width: 400px;height: 400px;background-color: chartreuse;float: left;}
</style>
    <div class="div"></div>   //橘色块
    <div class="div1"></div>   //黑色浮动	
    <div class="div2"></div>   //蓝色块
    <div class="div3"></div>    //绿色浮动

结果:

	清除浮动的影响:

在这里插入图片描述

(23)position定位

使用方式        Position:选择哪种定位;偏移量的设置
		定位的种类:
				static(默认)
				relative(相对定位)
				absolute(绝对定位)
				fixed(固定定位)
				Sticky(黏性定位)
1.Relative相对定位(相对于自己的初始位置)
如果没使用定位偏移量,对元素本身没有任何影响
不会使元素脱离文档流
不会影响其他元素布局
left、top、right、bottom是相对于当前元素本身进行某个方向的偏移
 #div{width: 200px;height: 200px;background-color: chartreuse;
position: relative;left: 100px;top: 200px;}
该容器先往右平移100px  在往下面平移100px
2.absolute绝对定位
使元素完全脱离文档流
使内联元素支持宽高
使块元素默认宽根据内容决定
如果有定位祖先元素相对于定位祖先元素发生偏移,没有定位祖先元素相对于整个文档发生偏移(祖先元素为继承的祖先,如果祖先元素设置了定位,则根据祖先元素定位偏移)
3.fixed固定定位
使元素完全脱离文档流
使内联元素支持宽高
使块元素默认宽根据内容决定
相对于整个浏览器窗口进行偏移,不受浏览器滚动条的影响
4.黏性定位
在指定位置进行黏性操作
当滚动条进行滑动的时候,该容器滑动到某一个位置,就固定住了(黏贴)
#div3{background-color: red;position: sticky;top: 100px;height: 2em;}
5.容器重叠问题显示??
Z-index:  数字                      设置定位层级
(两个容器重叠,默认是后写的优先级高(后面的显示),可根据其调重叠谁显示)
  		 默认层级为0
   		嵌套时候的层级问题??
嵌套的先一层一层比较

(24)css中添加省略号(单行的)

       overflow:hidden
 当内容比较多的时候,不想让他完全显示----->添加省略号显示
	(不择行、隐藏溢出内容、固定宽的情况下才能使用)
	
后面在学多行的情况
#div{width: 200px;white-space: nowrap;;overflow: hidden;text-overflow: ellipsis;border: 3px black solid;}

(25)CSS Sprite

 css雪碧也叫css精灵,是一种网页图片应用处理的方法。
 他允许你讲一个页面涉及到的所有零星图片都包含到一张大图中去加载.
	好处:
		减少图片的质量,网页的图片加载速度快
		减少网页的请求次数,加快打开网页
		
怎么获取雪碧图的某一张图片????
	让一个容器中只显示雪碧图的那一部分(背景的一个定位)
		(先用ps获取图片的宽高以及在图片的高度,还有是在雪碧图的左右)
   #box{width: 图片宽 ;height: 图片高;background: url(./img/雪碧图.jpg) no-repeat left: 高度;;}
(26)css圆角设置
 border-radius: 半径px           该标签添加圆角大小为px
		当半径大小为容器的一半或者50%的时候---->形成一个圆
    	  
 border-radius:值				四个角
 border-radius:值1 值2	  	    上面两个和下面两个
 border-radius: 值1 值2 值3 值4  顺时针

利用蓝湖工查看设计稿

先写基本结构在去做样式

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小镇男孩~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值