学习笔记~1.2 CSS浮动布局&盒模型

1.2 CSS浮动布局及盒模型

笔者为正在学习web前端开发基础的菜鸟,计划先学习祖传三大件:HTML CSS及JS。写博客主要是为了加深记忆,以及把自己所学分享。本博客的内容主要为学习笔记,由于自学,其中我会借鉴网课老师课堂笔记再加入一些自己的见解,同时会分享一些学习过程中遇到的问题和解决方法

正文

1.什么是浮动?
浮动就是让块级标签不独占一行。目的(使用场景):把块级标签元素可以排在一行上。
2.浮动的原理
就是让元素脱离文档流,不占用标准流。
3.float的属性值:
left:左浮动
right:右浮动
none:默认值,不浮动
4.浮动后,后面的元素不管是块级还是行级元素,不会显示在下一行。
5.清除浮动
目的:让后面的元素自动掉到下一行。
方法:
1)添加空标签,并设置样式:clear:both;
clear:left; 清除左浮动
clear:right; 清除右浮动
clear:both; 清除左右浮动
clear:none; 左右浮动都不清除
2)在要清除浮动的父级添加样式:overflow:hidden;
overflow:hidden; 超出部分隐藏,也可以用来实现清除浮动。
此种方式用的最多也最快捷。
3)在要清除浮动的父级添加伪元素,并设定样式:
父元素:after{
content:"";
display: block;
clear:both;
}

注意:在实际项目开发中,我们一般首先第2种方案。

6.CSS盒子模型
每个元素都是一个盒子,一个盒子由margin(外边距),border(边框线),padding(内边距)和content(内容)组成。
IE的盒子中的content又由padding和content组成。

区别外边距和内边距是以边框为参照。

系统默认外边距为8px,在练习的时候可以利用*选择器初始化所有标签的padding和margin,利于掌握。
1)外边距(margin):指元素边框线之外的距离。
    margin-left:左边距
    margin-right:右边距
    margin-top:上边距
    margin-bottom:下边距
    margin:可用来设置任意一个边的边距,可以带1至4个参数。
        1个(apx):表示上下左右都有这样的外边距apx
        2个(apx bpx):表示上下外边距为apx,左右外边距为bpx
        3个(apx bpx cpx):表示上外边距为apx,下外边距为cpx,左右外边距为bpx
        4个(apx bpx cpx dpx):表示上为apx,右为bpx,下为cpx,左为dpx
        1参数为所有,2参数上下、左右,3参数个人建议可以直接写成四参数带个零,四参数上右下左。
2)内边距(padding):指元素的文本内容与边框之间的距离。
    它的用法与margin完全一样。
3)边框(border)
    border-width:边框线宽度
    border-style:边框线样式
    border-color:边框线颜色

    复合写法(简写):
        border:border-width border-style border-color;
        注意:border-width border-style border-color这三个参数没有位置之分。

7.盒子的真实尺寸
盒子宽度 = width + padding左右 + border左右
盒子高度 = height + padding上下 + border上下

-小实验-

这里可以做一个小实验来体验盒子的真实尺寸


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Titletitle>
    <style>
        div{
            border: 1px black solid;
        }
        .father{
            width: 400px;
            height: 400px;
            overflow: hidden;
        }
        .son{
            height: 200px;
            width: 200px;
            background-color: #00fff7;
            float: left;
        }
    style>
head>
<body>
<div class="father">
    <div class="son">div>
    <div class="son">div>
div>
body>
html>

两个son类盒子的宽度为200px,包裹son类盒子的father类盒子宽度为400px。两个son盒子浮动之后大家可以看到,son并没有成为一行。
学习笔记~1.2 CSS浮动布局&盒模型_第1张图片
这是因为两个son盒子和一个father盒子都设置了边框宽度,这是一个数学问题

——son每个盒子真实宽度为:(width)200px + (border_width)2px = 202px

所以,增加father宽度(404px)或者减小son宽度(198px)都可以让其排列一行。

        .father{
            width: 404px;
            height: 400px;
            overflow: hidden;
        }

学习笔记~1.2 CSS浮动布局&盒模型_第2张图片

8.display属性:用来设置元素的显示方式。
属性值:
none:不显示元素
block:块显示,在元素前后设置换行符。目的:将行级标签转换为块级标签(因为行级标签不识别宽高,
而块级标签识别,转换后,行级标签也可以设置宽高了)
inline:行内显示,将块级标签转换为行级标签。
inline-block;将块级或行级标签转换为行内块级标签。
9.table样式
table一般不用来布局,主要用来格式化数据。
属性:
width:宽度
height:高度
border-collapse:collapse; 单线边框
border:边框线
td,tr属性:
width:宽度
height:高度
border:边框线
text-align:文本左右对齐(left(默认)/center/right)
vertical-align:文本垂直对齐(top/middle(默认)/bottom)
10.列表样式
不是描述性的文本的任何内容都可以认为是列表。比如:菜单、商品列表等。
1)列表类型
无序(ul)、有序(ol)和自定义列表(dl)。
ul和ol的列表项都是用li表示的,而dl是由一个dt和一个或多个dd组成的。
dl一般用来设定一个定义,比如名词解释等。dt:标题,dd:描述,用来对dt的内容进行解释并说明的。
2)样式(用来修改标识类型)
list-style-image:用图像表示标识
list-style-position:标识的位置(inside/outside(默认))
list-style-type:标识类型
可复合,任意顺序,任意参数数量都可以(其余自动默认)

总结

浮动是个好东西,一定多加练习,熟悉掌握。不过小心一些稍复杂的网页,标签嵌套比较多的时候,某个板块不需要浮动,却不小心设置了浮动。这种错误往往很难发现,所以在编写布局的时候,请尽量合理化标签的嵌套,看清标签之间关系。在利用浮动的时候,要计算好宽度是否允许浮动到一行。请记住,一定要及时清除浮动!
下图为利用今日所学做成的网页效果图,这里稍微用到布局样式position,下个文章介绍

效果图

学习笔记~1.2 CSS浮动布局&盒模型_第3张图片
HTML布局:


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>轮播图title>
    <link rel="stylesheet" href="../css/轮播图.css">
head>
<body>
<div class="carousel">
    
    <ul class="carousel-imgs">
        <li><a href="#"><img src="../img/da6d27e821afbcb0a8a95f462e84b060.jpg" alt="banner">a>li>
        <li><a href="#"><img src="../img/e1a83decfc450cadf1374d9bec5d7a1d.jpg" alt="banner">a>li>
        <li><a href="#"><img src="../img/e94aad857e8d35e079fd730d1f21ced7.jpg" alt="banner">a>li>
    ul>
    
    <div class="prev">div>
    <div class="next">div>
    
    <div class="count">
    <ul>
        <li class="active">li>
        <li>li>
        <li>li>
    ul>
    div>
div>



body>
html>

CSS样式:

/*轮播图*/
*{
    margin: 0;
    padding: 0;
}
li{
    list-style: none;
}
a{
    text-decoration: none;
}
.carousel{
    width: 768px;
    height: 432px;
    margin: 100px auto;
    background-color: #cccccc;
    position: relative;
    overflow: hidden;
}
.carousel-imgs{
    width: 99999px;
}
.carousel-imgs li{
    float: left;
}
.carousel-imgs img{
    width: 768px;
    height: 432px;
}
/*控制器*/
.prev,.next{
    width: 32px;
    height: 32px;
    position: absolute;
    top: 50%;
    margin-top: -16px;
}
.next{
    background-image: url("../img/next.png");
    right: 10px;
}
.prev{
    background-image: url("../img/prev.png");
    left: 10px;
}
/*计数器*/
.count{
    width: 768px;
    height: 10px;
    position: absolute;
    bottom: 25px;
}
.count ul{
    width: 100px;
    margin: 0 auto;
}

.count ul li{
    width: 10px;
    height: 10px;
    cursor: pointer;
    opacity: .5;
    background-color: #cccccc;
    float: left;
    margin-right: 10px;
    border-radius: 50%;
}
.count .active{
    background-color: #4375f3;
}

你可能感兴趣的:(HTML及CSS,html,css)