【CSS】垂直水平

在写HTML的时候大家要明确自己所写的元素是块状元素还是内联元素,不明白的同学可以看之前写的一篇从视图角度充分认识块状与内联元素在浏览器中是如何渲染的。视图角度看块状元素与内联元素

1.弄清楚了块状元素与内联元素后,要分析出自己所写的元素的父元素子元素是什么关系;是块状元素含在块状元素中,还是块状元素内嵌入的是内联元素。弄清楚层次关系后对处理垂直居中||水平居中很大帮助。
2. 整个文档是一个文档节点; 每个 HTML 元素是元素节点; HTML 元素内的文本是文本节点;每个 HTML 属性是属性节点;注释是注释节点

水平居中:

情形1:当元素块(默认/设置成block)+内联(文本节点,默认或设置成inline)时,text-align:center
此时内部元素会继承父节点的属性。通常为块+块,块+内联(若为内联+块的其中块元素也会继承其父节点的属性)
text-align:用户设置文本节点与图片的水平居中等使用,文本的居中依赖于父节点宽度而居中(默认为100%) 如下表示:

    <p style="text-align:center">文本节点</p>

同理img/span/h1…等(inline/inline-block)节点类似于文本节点使用,此时注意在块元素上设置text-align样式,若外部非块元素可以利用display:block等更改居中

<p style="text-align:center">
     <img src="" alt="">
</p>

情形2:当block元素自身有width属性(包括width:0)时:margin:0 auto (上下为零,左右自动居中)此时会自动居中

<span style="display:block">
   <img src="" alt="">
</span>

情形3:元素脱离文档流,含有自身宽度,父元素(relaive)+子(absolute),left:50% margin-left:-(width+padding)/2,或设置box-sizing:border-box此时偏移(width)/2

<div style="position:relative">
  <div style="position:absolute">
  ...
  </div>
</div>

情形4:通用型,使用flex布局设置justify-content:center(RN中justifyContent)

<div style="display:flex;justify-content:center">
</div>

情形5,transform:translate(50%,0),相对自身移动50%可以结合绝对定位使用将自身设置即为元素的大小平移。但是在元素上设置有动画时会影响动画的执行的预期效果

//可用来代替margin-left使用
<p style="transform:translate(50%,0)">
</p>

情形6,未定宽度:父元素设置 float:left position:relative left:50%,子元素:position:relative,left:-50%
relative相对于该元素本身进行移动, 设置其为50%也即是将子元素设置成了,此时子元素的div设置成相对于其移动50%,此时对于元素的50%那么世界就会很美好,设置float:left,让元素自身宽度为元素的宽度。

|================= = - - - - - - - - --(改变的宽度) - - - - - - - - - - -|

<div style="float:left;position:relative ; left:50%">
   <div style="position:relative;left:-50%">
     ...
</div>
</div>

对于未定义的,需要解决的是让其相对于元素本身的偏移

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 使用 CSS 让元素垂直水平居中有多种方法。 使用 `position: absolute` 和 `transform: translate(-50%, -50%)`: ```css .parent { position: relative; } .child { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } ``` 使用 `display: flex` 和 `align-items: center` 和 `justify-content: center`: ```css .parent { display: flex; align-items: center; justify-content: center; } ``` 使用 `display: grid` 和 `place-items: center`: ```css .parent { display: grid; place-items: center; } ``` 使用 `display: table` 和 `margin: auto`: ```css .parent { display: table; } .child { display: table-cell; vertical-align: middle; text-align: center; margin: auto; } ``` 使用 `margin: auto`: ```css .parent { position: relative; } .child { position: absolute; top: 0; bottom: 0; left: 0; right: 0; margin: auto; } ``` ### 回答2: 在CSS,我们可以使用不同的方法将一个元素居,无论是垂直居中还是水平居中。 要实现垂直居中,我们可以使用定位和transform属性。我们可以将父元素的position属性设置为relative,然后将要居的子元素的position属性设置为absolute,并将top和left属性都设为50%,然后再通过transform属性将其向上左移自身高度和宽度的一半,这样就能够实现垂直居中。 要实现水平居中,我们可以使用text-align属性。我们可以将父元素的text-align属性设置为center,然后将子元素的display属性设置为inline-block,这样子元素就能够在父元素的水平心位置展示。 另外,我们也可以使用flex布局来实现垂直水平居中。我们可以将父元素的display属性设置为flex,并将其justify-content和align-items属性都设置为center,这样就能够将子元素垂直水平居中。 总的来说,实现CSS垂直水平居中主要有定位、transform、text-align和flex布局等方法,根据实际需求选择合适的方法来实现居效果。 ### 回答3: 在CSS,要实现垂直水平居中,有几种方法可以选择。 方法一:使用Flexbox布局(弹性盒模型)。 首先,给父元素添加display:flex;和justify-content:center;属性,可以使子元素在水平方向上居。然后,给子元素添加align-items:center;属性,可以使子元素在垂直方向上居。 方法二:使用position属性和transform属性。 首先,给父元素添加position:relative;属性,用来作为子元素定位的参考点。然后,给子元素添加position:absolute;和top:50%;left:50%;属性,将子元素的左上角定位到父元素的心点。接下来,通过使用transform:translate(-50%,-50%);属性,将子元素向左上角移动自身宽高的50%,从而实现垂直水平居中。 方法三:使用display:table-cell属性和vertical-align属性。 首先,给父元素添加display:table-cell;和text-align:center;属性,可以使子元素在水平方向上居。然后,给子元素添加display:inline-block;和vertical-align:middle;属性,可以使子元素在垂直方向上居。 以上就是实现CSS垂直水平居中的几种常用方法,根据具体情况选择合适的方法来实现居效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值