-
2020-11-10 17:41:41
本篇文章主要的讲述的是在HTML中的span标签的文本是要如何居中和右对齐的,这里还有各种实例说明,下面就让我们一起来看看吧
程序猿的生活:打造全网web前端全栈资料库(总目录)看完学的更快,掌握的更加牢固,你值得拥有(持续更新)zhuanlan.zhihu.com首先我们来看看HTML span属性如何居中的?
其实想要这个span文本居中,有不少办法,这里提供了一种比较容易做的办法就是在代码中插入以下一行代码:
style= "text-align:center;line-height:18px; "
水平居中text-align:center;
设置行高line-height:18px; 同span高度一样,那么文字就可以垂直居中了(仅限一行文本)。
水平居中很简单,设置text-align:center就可以了,但是垂直居中一直都不得其解!
以前总是尝试着调padding-top,但是有的时候好使,更多的时候不行,今天同样,当height值不大时,增加padding-top就会增加了整个DIV或者SPAN的高度。
正在想理论上vertical-align的默认值应该是baseline啊,不会顶对齐啊,突然想起字体有个line-height属性,于是很显然其默认值就是一个字那么高,于是将line-height值改得和DIV或者SPAN的height相同!
这样DIV和SPAN中的文字就会垂直居中对齐了。
看一个span标签的实例吧:
<style> div {text-align:center;} div dd,div dt {text-align:left;} </style> <div> <dl> <dd>111</dd> <dt>11111111111111</dt> <dd>222</dd> <dt>222222222222222</dt> </dl> <span><a href="www.php.cn">水平居中</a></span> </div>
这样span标签里面的内容就会在页面当中居中显示了,效果如图:
接下来我们该解决的问题是如何右对齐呢?
我们常常在做网站的时候会div,li,span中加入span右对齐,例如:文章列表中在我们会加入时间让它右对齐,以增加网页的可读性,如下代码:
html如下:
<ul class="news"> <li>span右对齐,换行显示的解决方法<span>2010-8-26</span></li> </ul>
css:.news ul li span{float:right;}
不过问题又来了,往往我们在一个块中加入span时就会发现在网页中预览时span换行右对齐了,那么这是为什么呢?
原来是因为:当非float元素和float元素在一起的时候,假如非float元素在前,那么float元素将被排拆,所以,即使span是float:right,但文本显示是float:none,所以span将被排斥。
html span标签右对齐不换行的两种解决方法:
一、把span先于文本显示
<ul class="news"> <li><span>2010-8-26</span>span右对齐,换行显示的解决方法</li> </ul>
二、让文本float:left
<ul class="news"> <li><span class="fl">span右对齐,换行显示的解决方法<span><span class="fr">2010-8-26</span></li> </ul> .fl {float:left;} .fr{float:right;}
第二种方法没有第一种方法简单,为了网页代码的简洁性,建议采用第一种方法。
好了,以上就是关于HTML span标签的居中和右对齐的方法了,希望对你有帮助,有问题的可以在下方提问。
在这里谢谢大家一直对小编的支持,点赞谢谢!
更多相关内容 -
h5文字垂直居中_CSS 8元素居中(水平居中+垂直居中)
2020-11-21 02:57:54链接:CSS垂直居中,你会多少种写法?https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/92 怎么让一个 div 水平垂直居中一、元素水平居中1、text-align text-align:center; 行内元素(图片或...链接:
CSS垂直居中,你会多少种写法?https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/92 怎么让一个 div 水平垂直居中一、元素水平居中
1、text-align
text-align:center; 行内元素(图片或文字)居中
在父元素上设置text-align: center 使文字/图片在整个页面上水平居中
.container{ text-align:center; }
如一小选项按钮居中,可以使用:
.container{ display:inline-block; text-align:center; }
2、margin
margin: 0 auto; 用于块级元素的居中
.container { width: 80%; /*块级元素充满页面 定宽必备 */ margin-left: auto; margin-right: auto; /*或者 margin:0 auto;*/ }
如:块级元素居中
代码如下:
<style> .wrap{ max-width:600px; background: #ccc; margin: 0 auto; } </style> </head> <div class="wrap"> <h1>hello</h1> <p>world</p> </div>
二、元素垂直居中
1、居中 VS 不居中
注:高度由里面的内容撑开,一般不设置高度
代码如下:
<style> .ct{ padding: 40px 0; text-align: center; background: #eee; } </style> <div class="ct"> <p>你好世界</p> <p>helloworld</p> </div>
2、vertical-align实现居中
vertical-align: middle; 让行内元素或表格元素相对于基线对齐并居中
案例:如图片进行水平、垂直居中
代码如下:图片在容器内水平、垂直居中
<style> .box{ width: 300px; height: 200px; border: 1px solid ; text-align: center; } /*注:子元素和父元素分别设置 vertical-align:middle; ,均无法实现垂直居中*/ /*使用一个伪元素,设置一个虚拟的基准线*/ .box:before{ content: ''; display: inline-block; height: 100%; vertical-align: middle; ✔️ } .box img{ vertical-align: middle; ✔️ background: blue; } </style> <div class="box"> <img src="http://cdn.jirengu.com/public/logo-tiny.png" alt=""> </div>
3、table-cell 实现居中
display: table-cell; 水平垂直居中
代码如下:
<style> .box{ width: 300px; /*由于是行内元素,宽度必备*/ height: 200px; border: 1px solid ; display: table-cell; ✔️ vertical-align: middle; ✔️ text-align: center; } </style> <div class="box"> <img src="http://cdn.jirengu.com/public/logo-tiny.png" alt=""> </div>
4、绝对定位实现居中
案例:如弹出框 弹出框水平垂直居中
情况1:固定宽高块在浏览器窗口水平垂直居中,代码如下:
<style> html,body { height: 100%; } .dialog { position: absolute; /*绝对定位*/ left: 50%; top: 50%; margin-left: -200px; margin-top: -150px; width: 400px; height: 300px; box-shadow: 0px 0px 3px #000; } .dialog .header{ padding: 10px; background: #000; color: #fff; } .dialog .content{ padding: 10px; } </style> <div class="dialog"> <div class="header">我是标题</div> <div class="content">我是内容</div> </div>
情况2:去掉宽高的块在浏览器窗口水平垂直居中,代码如下:
<style> html,body { height: 100%; } .dialog { position: absolute; left: 50%; top: 50%; /* margin-left: -200px; margin-top: -150px; */ /*CSS3属性 相对于自己的偏移*/ transform:translate(-50%,-50%); box-shadow: 0px 0px 3px #000; } .dialog .header{ padding: 10px; background: #000; color: #fff; } .dialog .content{ padding: 10px; } </style> <div class="dialog"> <div class="header">我是标题</div> <div class="content">我是内容</div> <div class="content">我是内容</div> <div class="content">我是内容</div> <div class="content">我是内容</div> </div>
-
h5文字垂直居中_CSS居中的常用方式以及优缺点
2020-10-21 22:59:38text-align:center来看这个例子,一张图片和文字进行居中。如下图所示:img与文字内容都是行内元素,因此直接使用text-align就行了。代码如下图所示:在最外层的div中使用text-align:center的问题是,会导致所有的...前言
居中是页面开发中经常遇到的问题。
使用合适的、简单的、兼容性好的居中方式是我们页面仔在整个工作生涯中都要面对的问题。
text-align:center
来看这个例子,一张图片和文字进行居中。如下图所示:
img
与文字内容都是行内元素,因此直接使用text-align
就行了。代码如下图所示:在最外层的
div
中使用text-align:center
的问题是,会导致所有的子元素都会继承这个属性。如果还有一段文字用作介绍该图片的作用时,这段文字也会被居中。而我们希望这段文字是左对齐的,就不得不单独设置其
text-align:left
属性,以覆盖其父元素的属性。并且如果还有更多的子元素也需要这样做,覆盖属性本身就是下策,因此要采用其他方法。margin: 0 auto
由于显示的图片可能是变化的,宽高是不定的,但显示区域是固定的,所以一般会显式地给图片设置一个宽高。这个时候知道宽度就可以设置
margin:0 auto
方法,左右的margin
设置为auto
,浏览器就会自动设置左右的margin
值为容器剩余宽度的一半。使用
margin: 0 auto
可以说是最常用的左右居中的方法,不仅适用于块级元素也适用于行内元素。很多网页的布局都是使用margin: 0 auto
,例如淘宝pc端,如下图所示:display: table-cell
第一个垂直居中的方法是借助
table-cell
属性,效果图如下:table-cell
的一个好处就是它可以兼容到IE8
。table-cell
属性的缺点:- 容器的
margin
属性失效,因为margin
不适用于表格布局。所以使用margin: 0 auto
属性是不能使container
左右居中的。解决的方法也很简单:只需要在container
外层再多套一个div容器,然后设置这个外层容器的margin: 0 auto
即可。 - 设置了
table-cell
的元素再设置宽高为百分比是不起作用的。常见的场景是要将宽度属性设置为外层容器宽度的100%,解决方法是将container
的宽度设置成一个很大的值,例如5000px
,这样就达到100%的目的。 - 如果
container
需要设置position
为absolute
,table-cell
属性就会失效。因为设置position: absolute
就会把元素display
强制设置为block
类型。解决办法还是在外层套一层div
容器,将position: absolute
属性作用于这个容器上。
position: relative
上面所说
table-cell
的第三缺点的解决方法有一个副作用,就是设置内层container
的height
和width
为百分比时会失效。由于这个原因,导致有一种情况不能使用display:table-cell
垂直居中。就是需要在页面弹出一个框,这个框的位置需要在当前屏幕中左右上下居中。这时候通常需要将这个框的
position
设置为absolute
,这个时候table-cell
就不能发挥作用了。解决办法是使用
relative
定位,设置top
为50%,将弹窗的起始位置放到页面中间,再设置margin-top
为元素高度的负一半,这样使得弹窗在页面中间位置再往上移到一半自身的高度,这就正好在中间了,左右居中也可类似处理。使用此方法的缺点是需要知道具体的高度,无法根据内容长短自适应。
tranform: translate
用
tranform
方法,将margin-top
一个具体像素的负值改成transform: translate(0, -50%)
,因为translate
里面的百分比是根据元素本身的高度计算的,所以就可以达到自适应的效果。这个办法十分方便,而且加上
-webkit-
前缀,可以兼容到IE9。而
margin-top:-100px
与transform:translate(0, -50%)
都有一个缺点,就是如果设置left
为50%是借助position
为absolute
的话,可能会导致换行本来应该是一行显式的
p
元素却换行了,这是因为在一个relative
元素里面的absolute
定位的子元素会通过行内元素换行的方式,尽可能不超过容器的边界。由于设置left
为50%,导致p
元素超了边界,所以就换行了,即使再设置translate:-50%
也已经晚了。flex布局
flex
布局十分容易和方便,只需在副容器设置3个属性就行了.container{ display: flex; align-items: center; justify-content: center; }
但
flex
的缺点是不支持IE
vertical-aligin:middle
vertical-aligin:middle
主要是运用在行内元素中的。如果不做任何处理,那么默认的垂直居中是以
baseline
为基准的。为了能够垂直居中,需要改变居中方式。
要每个元素都要设置。
如果
container
的高度比图片要高,就会有留空的效果,如下:为了让中间的内容能够在
container
里上下居中,可以设置文字的line-height
为container
的高度,这样文字就上下居中了。由于图片与文字是垂直居中的,所以图片在container
里也是上下居中了。也就是说,如果需要垂直居中一个
div
里的比div
高度小的图片,可以添加一个元素,让它的line-height
等于div
的高度。下面使用伪元素::before
来添加line-height
。或者使用
display: inline-block
属性,加上height: 100%
。这个方法兼容性更好。absolute与margin:auto
使用
absolute
定位与margin:auto
方法也可以实现居中。如果图片比
container
大,这种方法就不适用了。因为有一个种比较常见的场景:图片有一边和contianer
一样大,另一边按图片的比例缩放,图片居中显示,超出的截断。这种情况下,只需把left/right/top/bottom
设置为一个很大的负值即可。总结
以上就是
css
中常用的居中方法,如果有更好的方法欢迎留言讨论。作者: zhangwinwin
链接:CSS居中的常用方式以及优缺点
来源:github - 容器的
-
h5文字垂直居中_CSS实现居中的几种方式你都了解吗?
2020-10-21 22:59:41CSS(Cascading Style Sheets)...本文将按照由简单至复杂的顺序,展示在固定宽高的父容器中,实现单个子元素垂直水平居中的9种方式。首先的HTML<body>部分都是<div>包含一个<p>:<为了方便观...CSS(Cascading Style Sheets)层叠样式表,是在1996年左右,W3C(万维网联盟)做HTML标准化的同时在HTML4.0之外开发的,拯救了当时越来越臃肿杂乱的HTML。
本文将按照由简单至复杂的顺序,展示在固定宽高的父容器中,实现单个子元素垂直水平居中的9种方式。
首先的HTML<body>部分都是<div>包含一个<p>:
<div class="box"> <p>I'm Centered</p> </div>
为了方便观察,CSS部分默认给<div>加了固定宽高和边框,给<p>加了底色:
.box { width: 300px; height: 200px; border: 1px solid; } p { background: lightblue; }
此时<p>是默认的块级盒子,撑满了内容所在的一整行:
默认效果,未居中,p标签没到顶是因为自带了外边距 要达到的效果 途径一:使用grid布局
- 父容器设置
align-items
justify-items
为center
,这个很好理解
.box { width: 300px; height: 200px; border: 1px solid; display: grid; align-items: center; justify-items: center; } p { background: lightblue; }
2. 同样的,也可以把
justify-items
属性换成justify-content
,效果是一样的.box { width: 300px; height: 200px; border: 1px solid; display: grid; align-items: center; justify-content: center; } p { background: lightblue; }
但它和上一条方法的实现方式略有差别,
justify-content
会把子元素所在网格收缩到内容所撑开的宽度,而justify-items
会把网格撑满父容器:justify-content下的网格仅到达内容的宽度 justify-items下的网格撑满父容器 3. 直接在子元素上加
margin: auto;
应该是最简便的方法了,利用子元素的外边距撑满父容器.box { width: 300px; height: 200px; border: 1px solid; display: grid; } p { background: lightblue; margin: auto; }
途径二:使用flex布局
4. flex布局的方法和grid很像,但是flex布局中没有
justify-items
,所以只能用justify-content
啦.box { width: 300px; height: 200px; border: 1px solid; display: flex; align-items: center; justify-content: center; } p { background: lightblue; }
5. 同样的,也可以在子元素上加
margin: auto;
.box { width: 300px; height: 200px; border: 1px solid; display: flex; } p { background: lightblue; margin: auto; }
途径三:使用table-cell布局
6. table-cell布局表现像一个表格的单元格,父容器中加上
vertical-align
垂直居中和文字text-align
水平居中就是垂直水平居中啦.box { width: 300px; height: 200px; border: 1px solid; display: table-cell; vertical-align: middle; text-align: center; } p { background: lightblue; }
但是这时候会发现一个问题,我们设置的底色却还是达到了父容器的左右两端:
底色未居中 如果对底色水平居中也有要求,可以把子元素转换为内联盒子
inline-block
.box { width: 300px; height: 200px; border: 1px solid; display: table-cell; vertical-align: middle; text-align: center; } p { background: lightblue; display: inline-block; }
途径四:使用绝对定位
7. 子元素设置绝对定位,参考点是父容器,通过
left
top
定位到靠中间的位置.box { width: 300px; height: 200px; border: 1px solid; position: relative; } p { background: lightblue; position: absolute; left: 50%; top: 50%; }
定位后的位置,明显不在中心 接着移动子元素,向上向左各一半自己的高度和宽度
.box { width: 300px; height: 200px; border: 1px solid; position: relative; } p { background: lightblue; position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); }
移动后,看起来水平居中了,但是垂直还差一点 还记得默认效果中<p>为什么没到顶吗?是的它的外边距又来捣乱了,我们把它取消掉就可以完全居中啦
.box { width: 300px; height: 200px; border: 1px solid; position: relative; } p { background: lightblue; position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); margin: 0; }
途(sǐ)径(lù)五:不推荐
8. 父容器设置文字水平居中,然后通过伪元素追加一个父容器高度的行高,最后子元素还要转换为内联盒子。或者行高加在父容器或子元素中,此时子元素要转为行内元素或取消外边距才行。由于过于复杂不推荐,故只展示一种情况的代码
.box { width: 300px; height: 200px; border: 1px solid; text-align: center; } .box::after { content: ''; line-height: 200px; } p { background: lightblue; display: inline-block; }
9. 体现CSS魅力的时候到了(雾
.box { width: 300px; height: 200px; border: 1px solid; position: relative; } p { background: lightblue; width: 100px; height: 40px; position: absolute; top: 0; bottom: 0; left: 0; right: 0; margin: auto; }
这种情况必须要给子元素设置宽高,仿佛所有的属性都是给底色围起来的框框设置的……肉眼可见效果并不好,而且代码繁琐。它存在的意义就是,当你考古时偶然遇到了,让你知道前辈费劲巴力写下的代码,其实就是想实现一个居中的效果……
你看出它偏了吗? 总结
前面的方法肯定是现在在用的大部分,眼熟后几种也不至于遇到就一脸萌逼:P
参考文献
1. 饥人谷 - 居中的多种实现
2. w3school - CSS 简介 - 父容器设置
-
[H5]标签中内容垂直居中
2020-11-05 17:16:271、p中内容垂直居中 p { background-color: #fe7fac; width: 120px; height: 80px; display: table-cell; vertical-align: middle; } 2、div中div垂直居中 div { background-color: #fe7fac; width: ... -
H5 水平居中 水平垂直居中
2021-05-18 18:09:55<font color="#0081ff" size="3">css中常见的各类居中问题答案。 -
移动端页面文字垂直居中兼容性问题
2019-06-24 16:27:53div里写文本,设置了height和line-height 相等,但是在ios下文本稍微偏上。 <div> div里的文本 </div> 有人说可以删除这行代码来达到目的: meta name="viewport" content="width=device-width,... -
h5页面的body页面水平垂直居中代码
2020-12-11 09:38:23<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> body{ display: inline-block;... . -
css 如何使文字垂直居中
2021-06-09 07:46:18单行文本,只需要将文本行高(line-height)和所在区域高度(height)设为一致即可:这是单行文本垂直居中/*css代码*/#div1{width: 300px;height: 100px;margin: 50px auto;border: 1px solid red;line-height: 100px; /... -
文字居中input文字垂直居中
2019-04-23 09:21:31做移动端都会遇到文字垂直居中的问题,特别是有些手机真的很难调整,然后就是必须要文字居中,那就说说几种文字垂直居中的问题吧。 普通的元素例如div 1.这种居中,利用padding上下值来居中。 2.知道高度用line-... -
css文字水平垂直居中怎么设置?
2021-06-14 07:46:42css文字水平垂直居中怎么设置?下面本篇文章就来给大家介绍使用CSS设置文字水平居中和垂直居中的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。1、文字水平居中在CSS中想要让文字水平居中... -
如何使CSS单行及多行文字水平垂直居中
2021-07-09 07:57:38一、单行文字1. line-height、text-align(兼容性ie6/7)CSS代码(为了节省空间,建议不要单行书写css样式).new{height:5em; line-height:5em; text-align:center; border:1px solid #ddd;}css及html2.display:flex、... -
H5元素的水平垂直居中布局总结
2019-07-28 21:37:451,块级元素设置height和line-height或者text-align: center,可以让块级元素包裹的内联元素或者自身文本内容垂直居中或者水平居中;但是对包裹的块级元素和浮动元素不起作用。 2,块级元素包裹块级元素,设置被... -
字体垂直居中的几种实现方法
2017-09-13 18:00:03这几天遇到了好多关于字体垂直居中的问题,整理一下,希望对大家也有帮助。vertical-align:middle vertical-align 用来指定行内元素(inline)和行内块级元素(inline-block)或表格单元格(table-cell)元素的... -
H5字体在移动端居中问题
2021-02-03 10:15:27在混合开发中,作为一个H5工程师,你的工作难度不是很大,但是你遇到的bug却不少。总结的来说,其实都是一些兼容性问题。 解决方案: 1、添加border相关属性: border:1px solid transparent; 2、针对Android 7.0... -
input框文字不垂直居中解决方案
2022-05-13 17:08:21input框文字不垂直居中解决方案 -
css垂直居中方案
2021-06-26 05:36:16垂直居中的几种方法html结构垂直居中css.container {width: 500px;height: 500px;border: 1px solid #000;position: relative;}1. 使用flex布局在父容器中设置.container{displayy: flex;justify-content: center;... -
Android 浏览器文本垂直居中问题
2021-06-02 16:58:03我们常使用 line-height 属性来实现文本的垂直居中,但是在安卓浏览器渲染中有一个常见的问题,就是对于小于12px的字体使用 line-height 属性进行垂直居中的时候,渲染出来的效果并不是文字垂直居中,而是会偏上一些... -
html 设置button 内文字垂直居中
2019-06-03 15:29:35虽然上面的效果很好,但笔者发现,若button的文字很多,这个方法就不适用,不过一般一个button不会含有这么多文字,所以就不深究下去,若读者有新的发现,希望可以在评论区跟我分享一下,多谢 ... -
移动端安卓文字垂直居中偏上偏移的解决方案
2018-05-16 17:11:44前几天的一篇博文:移动Web单行文字垂直居中的问题,提到了移动web里小于12px的文字居中异常的问题,最后还是改为12px才近乎解决了问题。但是有时候或许并不是那么乐观,你并不能将原本定为10px的字体改为12px。那该... -
移动端文字垂直居中上移问题
2018-08-08 21:15:31移动端的这个问题真的能把人逼疯。我为了解决这个问题,尝试用line-height,flex布局,定位等操作,文字还是上移。最后还是用定位+margin-top来解决的,哪位大佬有好的办法吗?... -
设置图片和文字的垂直居中
2019-09-15 22:57:32设置图片和文字的垂直居中。vertical-align:middle;图片竖向居中,然后文字就可以和图片对齐。 ... -
前端垂直居中的几种简单实现
2021-06-23 07:03:32就可以实现,但是对于垂直居中却并不是那么简单实现的,往往需要多条代码合作才能实现其效果。本文简单介绍几种垂直居中的方式,技术不高,水平有限,仅供参考。1. 不知道自己高度和父元素高度时,只要�使用绝对... -
h5中设置div中的内容水平并垂直居中
2016-05-25 15:08:251.水平居中 text-align: center ...2.垂直居中,设置line-height等于div的高度 例: div style="height: 100px; background-color: #e6b500; text-align: center; line-height: 100px"> text div> -
使用bootstrap进行表格布局,文字垂直居中
2018-06-05 09:29:22使用bootstrap进行表格布局,如果某个td的是图片或者文字太多,会使其他tb无法垂直居中,网上找了很多方法,vertical-align: middle; 这个也不能达到效果,原来bootstrap中已经设置了样式,并且优先级高,所以这个... -
css 文本和div垂直居中方法汇总
2016-07-04 14:10:07本文总结了垂直居中的各种方法,包括单行文本垂直居中、多行文本垂直居中以及div垂直居中,列出了多种情况对应的方法。读者可以根据实际需要选择合适的方法。 -
css 多行文字垂直居中
2021-12-14 15:13:25display: flex; flex-direction: column; justify-content: space-around; -
【前端】移动端页面文字垂直居中兼容性问题
2021-06-19 00:35:14按钮的高度和行高相等,文字应该垂直居中。第1张图chrome模拟器中是正确的,第2张图中的效果也基本正常,但第3张图中的文字明显偏上了。单位试过 rem,也试过 px,都会存在这种情况。有没有人能分析一下问题的原因?... -
文字和图标在部分安卓(小米、魅族)居中对其问题?
2021-06-08 04:58:18在做文字和小图标居中对齐时,在部分安卓机上会出现文字偏上的问题,导致文字和图标不是居中对其的尝试的方法有:display:inline-block;vertical-align:middle;弹性盒模型,padding相关代码// 请把代码文本粘贴...