首页 > 其他分享 >【CSS入门】第二课 - margin外边距

【CSS入门】第二课 - margin外边距

时间:2024-08-08 15:56:20浏览次数:15  
标签:第二课 元素 300px 1px 外边 div margin CSS

这一小节,我们说一下margin外边距。怎么理解这个外边距呢,比如小张和小丽站在一起,紧紧排着站。试想一下,如果他俩冬天都穿着羽绒服和夏天穿着短袖,是不是占据的空间会不一样呢。那么回到HTML网页开发商来说,如果两个元素,他们加一些外边距,占的空间也会不一样,而且会使两个元素的距离也变的不一样。下面我们来看一下外边距的知识。

目录

1 浏览器默认的外边距

2 两个块元素之间有默认外边距吗?

3  添加margin值

4 加深练习

5 行内元素的外边距

5.1 两个span行内元素显示的情况

5.2 给span设置外边距

6 最后


1 浏览器默认的外边距

上一节,我们新建了一个div标签,然后添加了名为 box 的css类。我们继续来看一下:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>我的第一个网页</title>
        <link rel="stylesheet" type="text/css" href="./css/index.css" />
    </head>
    <body>
        <div class="box">我在学习前端开发</div>
    </body>
</html>
.box {
    width: 300px;
    height: 300px;
    border: 1px solid red;
}

由上图可知,我们添加的这个div元素呢,并没有贴边,与浏览器边界呢,保留有一定的边距。但我们现在看,浏览器的标签们,我们知道head标签的内容并不会显示在浏览器窗口呢。所以,就剩下了body 标签  和 div 标签。

那么这个边距是body产生的,还是这个div产生的呢?我们可以Chrome浏览器的调试工具看一下:

通过浏览器调试工具可以看出来,div标签本身并没有margin值。我们再通过浏览器调试工具看一下是不是body造成的。

通过调试工具可以看出:

这个浏览器默认的边距,是body标签产生的。而且呢,他的默认外边距是 8px 。

所以,我们可以给body设置一下css样式,将他的margin外边距值设置为0,就可以了。

body {
    margin: 0;
}
.box {
    width: 300px;
    height: 300px;
    border: 1px solid red;
}

 

2 两个块元素之间有默认外边距吗?

那么如果两个块元素,比如再添加一个 div 标签,我们之间会有默认的外边距吗?

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>我的第一个网页</title>
        <link rel="stylesheet" type="text/css" href="./css/index.css" />
    </head>
    <body>
        <div class="box">我在学习前端开发</div>
        <div class="box">2024巴黎奥运会</div>
    </body>
</html>

通过上图可以看出,两个默认的div元素,并没有产生外边距,是紧紧贴在一起的。而且两个div元素中间的红色边框变粗了,证明他们是平铺下来的。

3  添加margin值

我们还可以通过设置,使第二个div元素与第一个div元素产生边距。这里就要涉及到一个组合写法,和单独写法。

组合写法记住一个顺序:(上 右 下 左)

比如我们希望第二个div元素,与上面的div元素产生50px的外边距,与左边产生30px的外边距,可以这样写:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>我的第一个网页</title>
        <link rel="stylesheet" type="text/css" href="./css/index.css" />
    </head>
    <body>
        <div class="box">我在学习前端开发</div>
        <div class="box box1">2024巴黎奥运会</div>
    </body>
</html>
body {
    margin: 0;
}
.box {
    width: 300px;
    height: 300px;
    border: 1px solid red;
}
.box1 {
    margin-top: 50px;
    margin-left: 30px;
}

当然,我们也可以采用组合式写法,因为一个元素有4个边距呢,写了margin-top margin-right margin-bottom margin-left 很多时候,我们得写很多个这样的css设置,不如组合写法高效。就像这样:

body {
    margin: 0;
}
.box {
    width: 300px;
    height: 300px;
    border: 1px solid red;
}
.box1 {
    /* margin-top: 50px;
    margin-left: 30px; */
    margin: 50px 0 0 30px;
}

通过上面代码,我们发现css里的注释,和html不一样,css的注释就是采用

/* 代码片段 */

的方式。而组合写法呢,记住这个顺序,上 右  下 左,一定要记住。

4 加深练习

我们还可以在第一个div元素呢,添加一个div元素,看一下子块元素的外边距设置。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>我的第一个网页</title>
        <link rel="stylesheet" type="text/css" href="./css/index.css" />
    </head>
    <body>
        <div class="box">
            我在学习前端开发
            <div class="box-inner">我正在学习CSS入门课程</div>
        </div>
        <div class="box box1">2024巴黎奥运会</div>
    </body>
</html>
body {
    margin: 0;
}
.box {
    width: 300px;
    height: 300px;
    border: 1px solid red;
}
.box1 {
    /* margin-top: 50px;
    margin-left: 30px; */
    margin: 50px 0 0 30px;
}
.box-inner {
    border: 1px solid blue;
    margin: 20px 0 0 20px;
}

通过上面代码,我们可以出,子块元素的margin外边距生效了,而且子块元素的的默认宽度是跟着父元素走的,如果子元素不设置宽度,那么宽度就是父元素的宽度。 

但是我们看这个子块元素跟右边贴住了,不好看,对吧。我们上面都没有设置过右侧的边距,我们来试一下。

body {
    margin: 0;
}
.box {
    width: 300px;
    height: 300px;
    border: 1px solid red;
}
.box1 {
    /* margin-top: 50px;
    margin-left: 30px; */
    margin: 50px 0 0 30px;
}
.box-inner {
    border: 1px solid blue;
    margin: 20px 20px 0 20px;
}

通过上面代码可知,虽然默认子元素的宽度是跟着父元素走的,但可以通过margin设置外边距,改变元素的宽度显示

5 行内元素的外边距

5.1 两个span行内元素显示的情况

我们上面说的都是div块元素的外边距,那么行内元素,例如 span 标签的外边距,会有何不同呢?我们在第二个div元素呢,加一个span标签试试。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>我的第一个网页</title>
        <link rel="stylesheet" type="text/css" href="./css/index.css" />
    </head>
    <body>
        <div class="box">
            我在学习前端开发
            <div class="box-inner">我正在学习CSS入门课程</div>
        </div>
        <div class="box box1">
            2024巴黎奥运会
            <span class="box1-inner">侯志慧又夺冠啦!</span>
        </div>
    </body>
</html>
body {
    margin: 0;
}
.box {
    width: 300px;
    height: 300px;
    border: 1px solid red;
}
.box1 {
    /* margin-top: 50px;
    margin-left: 30px; */
    margin: 50px 0 0 30px;
}
.box-inner {
    border: 1px solid blue;
    margin: 20px 20px 0 20px;
}
.box1-inner {
    border: 1px solid green;
}

 

通过上面代码,我们可以得知,不过做HTML练习的时候已经知道了,这里复习一下吧。我们新添加的span这个行内元素,并没有产生换行效果,而是又继续横排起来了。

但是呢,新添加的span标签,和父元素这个div的上横线重叠了

那么我们再添加一个span行内元素呢?

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>我的第一个网页</title>
        <link rel="stylesheet" type="text/css" href="./css/index.css" />
    </head>
    <body>
        <div class="box">
            我在学习前端开发
            <div class="box-inner">我正在学习CSS入门课程</div>
        </div>
        <div class="box box1">
            2024巴黎奥运会
            <span class="box1-inner">侯志慧又夺冠啦!</span>
            <span class="box1-inner">侯志慧太棒了!</span>
        </div>
    </body>
</html>

 

通过以上代码发现,第二个span元素,因为放不下而换行了。

注意:右侧的空隙并不是外边距造成的,而是内容放不下了,被挤下去了,默认是左对齐的,所以你看,距离左边没有空隙,但是右边有。后边我们说默认右对齐的情况。

5.2 给span设置外边距

下面,我们给第一个span元素设置外边距,看看效果:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>我的第一个网页</title>
        <link rel="stylesheet" type="text/css" href="./css/index.css" />
    </head>
    <body>
        <div class="box">
            我在学习前端开发
            <div class="box-inner">我正在学习CSS入门课程</div>
        </div>
        <div class="box box1">
            2024巴黎奥运会
            <span class="box1-inner box1-inner1">侯志慧又夺冠啦!</span>
            <span class="box1-inner">侯志慧太棒了!</span>
        </div>
    </body>
</html>
body {
    margin: 0;
}
.box {
    width: 300px;
    height: 300px;
    border: 1px solid red;
}
.box1 {
    /* margin-top: 50px;
    margin-left: 30px; */
    margin: 50px 0 0 30px;
}
.box-inner {
    border: 1px solid blue;
    margin: 20px 20px 0 20px;
}
.box1-inner {
    border: 1px solid green;
}
.box1-inner1 {
    margin: 20px;
}

通过上面代码,可以发现,我们给span标签设置外边距,这里采用了一个组合式写法,但这个组合式写法更加的省事,只写了一个 margin: 20px;  这样的。这样的写法就是说:上 右 下 左,我不分别设置了,都是20px 。

但是看效果图,只有左和右生效了,上下并没有生效。(这就是行内元素与块元素在margin外边距设置上的不同。)

6 最后

我们这一节,从margin外边距开始说了css,其实这里面又不光有 margin 外边距的知识点,其实越到后来,越很难单独说清楚某一个知识点,知识点呢,都是有关联的。所以大家需要认真去记住一些东西,认真练习一些代码。

我在文章里会总结一些,你在练习的过程中,也要形成自己的一些总结,这样才能更加扎实的学习下去。好了,这一节就到这里啦。

喜欢这个专栏的小伙伴,记得点个“订阅”:WEB前端小白从这里出发_经海路大白狗的博客-CSDN博客

反正也不花钱,一起开心的学习前端开发。

 

标签:第二课,元素,300px,1px,外边,div,margin,CSS
From: https://blog.csdn.net/xingyu_qie/article/details/141021281

相关文章

  • 一个简单的HTML网页 、个人主页网页设计(HTML+CSS)
     一、......
  • html+css 实现hover边框2边生长按钮
    前言:哈喽,大家好,今天给大家分享html+css绚丽效果!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦......
  • 09HTML+CSS
    完成小兔鲜儿商城界面1<!DOCTYPEhtml>2<htmllang="en">34<head>5<metacharset="UTF-8">6<metaname="viewport"content="width=device-width,initial-scale=1.0">7......
  • 10HTML+CSS
    平面转换平面转换transform,作用:为元素添加动态效果,一般与过渡配合使用⚫概念:改变盒子在平面内的形态(位移、旋转、缩放、倾斜)⚫平面转换又叫2D转换。属性⚫取值◆像素单位数值◆百分比(参照盒子自身尺寸计算结果)◆正负均可⚫技巧◆translate()只写一个值,表示......
  • HTML5+CSS3笔记(Xmind格式):第四天
    Xmind鸟瞰图:简单文字总结:HTML5+CSS3知识总结:媒体查询:  1.媒体查询格式:@media设备类型and设备特性  2.screen:设置屏幕  3.max-width(最大宽度),min-width(最小宽度)  4.可以通过媒体查询引入不同的css样式移动端布局方式:  1.静态布局  2.......
  • HTML5+CSS3笔记(Xmind格式):第三天
    Xmind鸟瞰图:简单文字总结:过渡transition:过渡属性过渡时间运动曲线何时开始 2D变形transform:  1.平移:translate(单位px)  2.缩放:scale(默认1,大于1放大,小于1缩小)  3.旋转:rotate(单位deg)  4.倾斜:skew(单位deg)3D变形transform:  1.rotateX......
  • HTML5+CSS3笔记(Xmind格式):第二天
    Xmind鸟瞰图:简单文字总结:新增选择器:  1.选择相邻兄弟  2.属性选择器  3.结构性伪类选择器  4.整体结构类型  5.标签结构类型  6.指定子元素的序号  7.文本选择伪元素  8.表单中使用的状态伪类选择器  9.内容追加伪元素  ......
  • 涨冷门知识之CSS魔法:边距合并
    后端同学问了一个问题:“为什么背景色没有充满?”F12,inspect,哎嗨,p标签存在默认边距源码如下:点击查看代码<!DOCTYPEhtml><htmllang="zh-CN"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,i......
  • CSS3第一天(基础选择器+复合选择器)
    1.选择器基础选择器:标签选择器(某一类标签)、类选择器(一个或几个标签,最常用)、id选择器和通配符选择器标签名{属性1:属性值1;属性2:属性值2;...}类选择器(可以多个标签使用).类名{属性1:属性值1;...}<ul><liclass="red">大雨</li></ul>类名长的,可以用短横线分割,最......
  • 不用一分钟,理解css中repeat函数的auto-fill和auto-fit
    相信大家在使用grid布局时,总难免会使用到grid-template-columns:repeat(auto-fit,minmax(200px,1fr));这里的auto-fit很好理解,就是按照容器大小和元素数量,将网格自动分成多少列。比如有4个元素时:页面宽度200px,则每行有一个元素页面宽度800px,则每行有四个元素,页面宽度......