4-3编程练习图片文字对齐

4-3编程练习图片文字对齐

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>文本样式</title>
        <style type="text/css">
           /*写出CSS样式*/
           div{width:100%;background-color:#eee;text-align:center;line-height:5em;font-size:2em;display: table;}
           img{vertical-align: middle;}
           p{display: table-cell;vertical-align: middle;background-color: green;}
           .span1{vertical-align: middle;font-size:2em;display: table-cell;}
           .span2{vertical-align: middle;color:red;font-size:1em;text-decoration:underline;display: table-cell;}
        </style>
    </head>
    <body>
          <!--写出html代码-->
          <div>
              <img src="http://img1.sycdn.imooc.com/climg//59c21bae000157fa01000059.jpg"></img>
              <p><span class="span1">CSS层叠样式表</span><span class ="span2">(Cssss Style Sheet)</span></p>
          </div>
          
    </body>
</html>

这是最开始编写不成功的代码。
我把文字都放在p标签内,加了两个span标签,所以文字整体应该是块级元素。
为了能实现上下居中对齐,在父元素div加了display:table,span里头加了display:table-cell,再分别设置vertical-align对齐。
问题来了,这时候为什么div设置的居中对齐无效了?我再把text-align:center;属性加到img和p的属性也一样?
另外,我这样编写的话,属性里有哪些代码是多余的?求解答,谢谢啦!
[object Object]

=============================分割线,这一段的貌似是成功的==============================================
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>文本样式</title>
        <style type="text/css">
           /*写出CSS样式*/
           div{width:100%;background-color:#eee;text-align:center;line-height:5em;font-size:2em;}
           img{vertical-align: middle;}
           .span1{vertical-align: middle;font-size:2em;}
           .span2{vertical-align: middle;color:red;font-size:1em;text-decoration:underline;}
        </style>
    </head>
    <body>
          <!--写出html代码-->
          <div>
              <img src="http://img1.sycdn.imooc.com/climg//59c21bae000157fa01000059.jpg"></img>
              <span class="span1">CSS层叠样式表</span><span class ="span2">(Cssss Style Sheet)</span>
          </div>
          
    </body>
</html>

这是第二段的,貌似是成功的。

正在回答

登陆购买课程后可参与讨论,去登陆

6回答

关于水平居中问题,根据不同代码情况,居中情况不同:

  1. 上面代码情况,居中使用text-align:center;

  2. 使用relative、absolute 居中,如子元素和父元素宽度一样,直接使用text-align:center; ,如设置宽度,居中代码如下:

css:

div{width:100%;background-color:#eee;font-size:2em;display: relative;height:300px;}
 p{display: absolute;vertical-align: middle;background-color: green; background-color: red;width:300px;left:0;right:0;margin:0 auto;}
 .span1{font-size:2em;}

html:

<div>              
     <p><span class="span1">CSS层叠样式表</span></p>
 </div>

不同代码情况,使用不同的方案,以上两种情况。

qq_烟锁池塘_0 2017-12-31 18:03:56

<img>是单标签

Miss路 2017-12-31 12:14:09

vertical-align 属性设置元素的垂直对齐方式。默认元素放置在父元素的基线上,还有一些参考值:

http://img1.sycdn.imooc.com//climg/5a48640400010c8016720926.jpg

祝学习愉快!

小于飞飞 2017-12-29 19:08:57

只针对垂直对齐说明:

  1. div指定height高度观察

  2. display: table 和 display: table-cell 使用应该是父子关系,你的代码:div加了display:table,span里头加了display:table-cell,div和span不是父子关系。

  3. div加了display:table,如想p标签内容垂直对齐,在p标签添加 display: table-cell;vertical-align: middle; 就可以,span不用添加

  • 提问者 吃面包超人 #1
    感谢,明白这个垂直方向对齐的关系了。 还想继续请教,水平方向的,div和p设置了display关系后,应该怎么设置水平居中对齐呢?
    2017-12-29 21:56:05
正在想名字呢 2017-12-29 19:02:18

这个属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐

提问者 吃面包超人 2017-12-29 17:36:09

另外,几个行内元素拼在一起的时候,vertical-align是以哪一个为参考设置的呢?

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
前端小白入门系列课程
  • 参与学习           人
  • 提交作业       11218    份
  • 解答问题       36713    个

从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师