美文网首页实用前端前端记念册html
淘宝面试题之--图片、多行文本、块级等在父级盒子里怎么做居中

淘宝面试题之--图片、多行文本、块级等在父级盒子里怎么做居中

作者: 麦壳儿UIandFE2 | 来源:发表于2017-04-09 15:22 被阅读159次

标签(空格分隔):display:table-cell 块转成行内块后的垂直居中


1:图片、多行文字、块转成行内块后的水平垂直居中

序:

图片、多行文字、块转成行内块的水平垂直居中问题,在水平方向上都不难实现,主要难在垂直方向上。
在 淘宝UED 招聘 中有这样一道题目:

“使用纯CSS实现未知尺寸的图片(但高宽都小于200px)在200px的正方形容器中水平和垂直居中。”

工作中最常遇到的一个问题,很有代表性。
问题的关键在于,行内块img不同于普通的行内块元素,默认基线对齐等不太一样,要实现垂直居中,不是简单父级:line-height==height能解决的

示例1:

现在我要在logo即h1>a>img的结构中,让img垂直居中在a/h1中。这也是做每个网站的logo时常常遇到的问题。水平都不难,父级给tac即可。

html:

<div class="nav">
    <h1 class="logo"><a href="###">![](images/logo.png)</a></h1>
</div>

css:

        h1{
            height: 90px;
        }

        h1  a{
            display: inline-block;
            height: 90px;
            background: #ff6600;
            //父级身上:主要是这两条
            display: table-cell;
            vertical-align:middle;
            }
        h1  a img{
             //自己身上:
            vertical-align: middle;
        }

效果图:


Paste_Image.png

tip:display:table-cell

  • 一些刚接触前端的童鞋对display:table-cell可能不太知道,其实圈里已经是很成熟老套的做法了,简单说明下:

display:table-cell属性就是让标签元素以表格单元格的形式呈现,类似于td标签。目前IE8+以及其他现代浏览器都是支持此属性的,但是IE6/7不支持,这一事实在传统前端项目中大大制约了display:table-cell属性在实际项目中的应用。但是在如今这样的前端时代里,兼容到IE8几乎也是很少见的了。一般都是现代浏览器即:IE9+,兼容性不用太担心了。除非你们公司的项目目标人群就是那些... ...此处自行脑补。

  • 单元格有一些比较特别的属性,例如元素的垂直居中对齐,关联伸缩等,所以display:table-cell还是有不少潜在的使用价值的.

与其他一些display属性类似,table-cell同样会被其他一些CSS属性破坏,例如float,position:absolute,所以,在使用display:table-cell与float:left或是position:absolute属性尽量不用同用。设置了display:table-cell的元素对宽度高度敏感,对垂直方向的margin值无反应,响应padding属性,具有td元素的特性。

  • display:table-cell 在“图片、多行文字的水平垂直居中”中应用较多

示例1扩展:语义好更好的logo部分的处理。

logo以背景形式给,有网站名字的文字描述。毕竟爬虫在爬取站点时优先拿到h1的信息,SEO更好。

html:

<h1 class="logo_tit">
    <a href="//www.jd.com" class="logo_tit_lk">京东</a>
</h1>

css:

.logo_tit_lk {
    overflow: hidden;
    display: block;
    width: 190px;
    height: 170px;
    background-image: url(//misc.360buyimg.com/mtd/pc/index/home/images/logo.v2.png);
    background-repeat: no-repeat;
    text-indent: -999px;
}

1:块级在父级盒子里怎么做水平垂直居中

序:

这个也是工作中常常遇到的问题。这个就是比较好解决和想到的。比较典型的做法:下边是emmet语法简写,如果你看不懂。请看下边代码。

父级:
por
子级:
poa
top:50%
left:50%
mt:--自身高度/2
ml:--自身 宽度/2

示例2:

html:

<div class="nav">
    <div class="navIn"></div>
</div>

css:

        .nav {
            height: 200px;
            background:hotpink;
            //核心代码
            position: relative;
        }

        .navIn {
            height: 100px;
            width: 100px;
            background: lightblue;
            //核心代码
            position: absolute;
            top: 50%;
            left: 50%;
            margin-left: -50px;
            margin-top: -50px;
        }

效果图:

父级占满屏幕

还有一种方式就是,将内部块转成行内块来处理,但是垂直方向上还是不能使用LH=H的方式去处理的,而是还需要采用display:table-cell;但是父级宽度必须设置,否则由内容宽度撑开。

        .nav {
            /*这么处理,宽度就必须设定了*/
            width: 999px;
            height: 200px;
            background: hotpink;
            
            text-align: center;
            display: table-cell;
            vertical-align: middle;
        }

        .navIn {
            height: 100px;
            width: 100px;
            background: lightblue;
            
            display: inline-block;
            vertical-align: middle;
        }

效果图:

父级宽度单设,注意右侧有留白

----------------------------------------------------喜欢就动动小手哈。------------------------------------------------------

--------------------------------------你的支持是洒家-麦壳-macrolam前进的动力--------------------------------------

相关文章

  • 淘宝面试题之--图片、多行文本、块级等在父级盒子里怎么做居中

    标签(空格分隔):display:table-cell 块转成行内块后的垂直居中 1:图片、多行文字、块转成行内块...

  • CSS竖直居中

    (3)父元素高度确定的多文本、图片、块级元素居中方法一:设置块级元素的display:table-cell(ie6...

  • 各种居中以及文字一行内展示

    以下是个人整理 父元素宽高已知 单行文本水平垂直居中 子元素为非块级元素水平、垂直居中(包含多行文本) 不能使用c...

  • CSS中的居中

    一、水平居中 文本、图片等行内元素的水平居中:text-align:center; 宽度确定的块级元素的水平居中:...

  • 垂直居中和水平居中

    一.水平居中 (1)文本图片行内元素水平居中 2.确定宽度的块级元素水平居中 (3)宽度不定的块级元素水平居中 (...

  • CSS元素居中

    水平居中 行内元素居中:在父元素上设置 text-align: center 使文字/图片水平居中。 块级元素居中...

  • 居中

    水平居中 行内元素(单行/多行) 单行块级元素 多行块级元素 垂直居中 单行行内元素 padding-top = ...

  • CSS居中问题合辑

    在CSS中,居中分为水平居中和垂直居中,在单行文本,多行文本和块级元素上,所使用的方法又不同 做一个小归纳,若您看...

  • CSS居中的几种方法

    一、水平居中 1.行内元素居中(文字/图片)在父元素上加上text-align:center; 2.块级元素居中设...

  • 所有CSS居中方法,了解一下?

    目录 水平居中内联元素水平居中块级元素水平居中多个块级元素的水平居中 垂直居中内联元素垂直居中单行内联元素多行内联...

网友评论

    本文标题:淘宝面试题之--图片、多行文本、块级等在父级盒子里怎么做居中

    本文链接:https://www.haomeiwen.com/subject/iredattx.html