整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

css中如何让div水平居中(上)

端面试题中经常会出现这个问题,接下来,小郭就带你揭秘几种最常见的答案。

关注我!了解更多前端干货!

先设定一个html结构以及css的基本样式。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>如何让div实现水平居中</title>
</head>
<body>
    <div id="dad">
        <div id="son"></div>
    </div>
</body>
</html>

css样式

#dad{
    width: 400px;
    height: 200px;
    border: 3px solid green;
    margin: 30px auto;
}
#son{
    width: 100px;
    height: 100px;
    background: purple;
}

方法一:纯margin

/*css处添加下面代码*/
#son{
		margin:0 auto;
}

方法二:position定位

/*css处添加下面代码*/
#dad{
    position: relative;
}
#son{
    position: absolute;
		left:50%;
    margin-left:-50px;
}
/*注意:margin-left是负值,是#son这个div宽的一半*/ç

方法三:flexbox

/*css处添加下面代码*/
#dad{
    display: flex;
    justify-content: center;    
}
/*注意:弹性盒子的大部分属性都是写在父级上的*/

以上三种是最常见的,下期我们来讲讲其他奇形怪状的方法~

关注我,带你了解更多前端干货!

学前端,就选锐盈课堂!

为Web开发人员,最常见的事情之一就是更改HTML元素的背景颜色。但是,如果您不了解如何使用CSS background-color属性,可能会产生混淆。在本文中,我们讨论以下几点

1.HTML元素的默认背景色值

2.如何更改div的背景颜色,这是非常常见的元素

3.该background-color属性会影响CSS盒子模型的哪些部分,以及

4.此属性可以采用的不同值。

元素的默认背景色

div的默认背景颜色是transparent。因此,如果您不指定div的背景色,它将显示其父元素的背景色。

更改Div的背景颜色

在此示例中,我们将更改以下div的背景颜色。

<div class="div-1"> I love HTML </div>
<div class="div-2"> I love CSS </div>
<div class="div-3"> I love JavaScript </div>

没有任何样式,它将在视觉上转换为以下内容。

让我们通过向类中添加样式来更改div的背景颜色。您可以通过尝试HTML文件中的示例进行操作。

<style>
    .div-1 {
        background-color: #EBEBEB;
    }
    
    .div-2 {
    	background-color: #ABBAEA;
    }
    
    .div-3 {
    	background-color: #FBD603;
    }
</style>

<body>
    <div class="div-1"> I love HTML </div>
    <div class="div-2"> I love CSS </div>
    <div class="div-3"> I love JavaScript </div>
</body>

这将导致以下结果:

看!我们已成功更改了该div的背景颜色。接下来,让我们更多地了解此属性。让我们看看background-color属性如何影响CSS-box模型的各个部分。

背景颜色和CSS Box模型

根据CSS框模型,所有HTML元素都可以建模为矩形框。每个盒子由4个部分组成,如下图所示。

如果您不熟悉Box模型,则可以查阅相关资料。问题是,当您更改div的背景颜色时,Box模型的哪一部分会受到影响?简单的答案是填充区域和内容区域。让我们通过一个例子来确认这一点。

<style>
    body {
        background-color: #ABBAEA;
    }
    div {
        height: 200px;
        margin: 20px;
        border: 5px solid;
        background-color: #FBD603;
    }
</style>
<body>
    <div>
        <p>This is the parent div which contains the div we are testing</p>

        <div>
            <p>This example shows that changing the background color of a div does not affect the border and margin of the div.</p>
        </div>
    </div>
</body>

这将导致:

从上面的示例中,我们可以看到空白区域和边框区域不受背景颜色变化的影响。我们可以使用border-color属性更改边框的颜色。边距区域保持透明,并反映父容器的背景色。

最后,让我们讨论background-color属性可以采用的值。

背景色值

就像color属性一样,background-color属性可以采用六个不同的值。让我们通过一个示例考虑三个最常见的值。在示例中,我们将div的背景色设置为具有不同值的红色。

<style>
    /* Keyword value/name of color */
    .div-1 {
        background-color: red;
    }
    
    /* Hexadecimal value */
    .div-2 {
       background-color: #FF0000;	 
    }
    
    /* RGB value */
    .div-3 {
    	background-color: rgb(255,0,0);
    }
    
</style>

<body>
    <div class="div-1">
        <p>The background property can take six different values.</p>
    </div>

    <div class="div-2">
        <p>The background property can take six different values.</p>
    </div>

    <div class="div-3">
        <p>The background property can take six different values.</p>
    </div>
</body>

注意,它们的结果都是相同的背景色。

该background-color属性可以采用的其他值包括HSL值,特殊关键字值和全局值。这是每个例子。

/* HSL value */
background-color: hsl(0, 100%, 25%;

/* Special keyword values */
background-color: currentcolor;
background-color: transparent;

/* Global values */
background-color: inherit;
background-color: initial;
background-color: unset;

额外注意

设置元素的背景色时,重要的是要确保背景色和其包含的文本颜色的对比度足够高。这是为了确保弱视人士可以轻松阅读文本。

第一个div的背景颜色与文本颜色之间的对比度不够高,每个人都看不到。因此,除非您是唯一正在使用的网站,并且您的视力非常好,否则应避免这种颜色组合。

第二个div在背景颜色和文本颜色之间具有更好的对比度。因此,它使人们更容易阅读和阅读。

结论

在本文中,我们看到了如何更改div的背景颜色。我们还讨论了CSS Box模型的哪些部分受背景颜色变化的影响。最后,我们讨论了background-color属性可以采用的值。

希望本文对您有所帮助。谢谢阅读。

近几年,前端经历了飞速发展,每隔几个月,就有新的技术框架产生,如果你有1年多没有接触过它,那么再上手的时候,你一定会对它感到陌生,似乎一不留神,自己就已经被无情抛弃了。


面对着js框架的飞速发展,得益于babel技术,浏览器可以很快地使用新的框架技术,vue,angular,react似乎也已经统治了好久好久。

而作为前端三剑客的css呢?似乎css3已经是很久很久的事情了,久到了我们不知道它是否还在更新,css是否还有新的技术产生。

虽然各种scss,stylus,less预处理器提高了我们代码的开发和维护,但是css依然缺少一个一击致命,一剑封喉的技术。

庆幸的是,我们等到了grid的到来,它的到来宣布了css布局从此进入了grid时代。

table布局

早期的网页布局是采用table的,也就是所有的内容都会放到table里面,如果想要内嵌布局,就会采用table嵌套table,那个时候可以说布局很简单,因为就是使用table,但是table过于繁琐,因此也产生了大量无用的代码。

div+css

css浮动的出现,彻底解放了网页布局,目前主流的网页采用的都是div+css的布局,这种布局简化了代码结构,通过使用css来定位元素位置,可以说这种布局极大程度上网站的开发效率,同时网页的可维护性也得到大大提高。

grid王者到来

首先我们看下grid的支持情况,从下面的图片可以看到,主流浏览器都是支持的,特别是在最新版的ie也采用和chrome一样的内核之后,可以说现在前端开发终于迎来了最幸福的时刻。



这是一个非常棒的布局解决方案。自从网络诞生以来,我们就一直在努力设计我们的网站,强迫他们去适应和使用那些不适合他们的方式。

不过网格布局的出现,直接从浏览器解决了我们布局的复杂性,我们不再需要复杂的css来生成网格布局,不需要使用bootstrap这样的网格框架来布局,我们可以使用简单的grid布局来完成。

使用grid的优点

  • 我们可以创建任意数量的网格。
  • fraction unit 使得控制布局比例非常方便。
  • repeat可以重复布局。
  • 最简原则,只需要定义需要使用的行和列。
  • 网格支持命名


如何使用

  1. 声明 display:grid;
  2. 定义列 grid-template-columns: 100px 100px 100px;
  3. 设置间距,grid-row-gap: 20px;