css揭秘系列

7.结构和布局css

自适应内部元素:浏览器

min-content(容器内部最大的不可断行元素的宽度(即最宽的单词、图片或具备固定宽度的盒元
素)
<figure>
 <img src="adamcatlace.jpg" />
 <figcaption>
 The great Sir Adam Catlace was named after
 Countess Ada Lovelace, the first programmer.
 </figcaption>
</figure>问题是文字内容可能很长导问题
解决:
figure {
 max-width: 300px;//兼容其余不支持该属性的浏览器
 max-width: min-content;
 margin: auto;
}
figure > img { max-width: inherit; }

图片描述图片描述
水平居中:布局

行内:text-align:center;
块:margin:auto;

垂直居中(就比较复杂了)--早期定宽元素使用的绝对定位的三种写法flex

1.
    main {
     position: absolute;
     top: 50%;
     left: 50%;
     margin-top: -3em; /* 6/2 = 3 */
     margin-left: -9em; /* 18/2 = 9 */
     width: 18em;
     height: 6em;
    }
2.
     main {
     position: absolute;
     top: calc(50% - 3em);
     left: calc(50% - 9em);
     width: 18em;
     height: 6em;
    }
3.能够不用知道元素宽高
    main {
     position: absolute;
     top: 50%;
     left: 50%;
     transform: translate(-50%, -50%);
    }

绝对定位的写法有个问题,当元素在高度上超过了视口,那它的顶部会被视
口裁切掉
clipboard.pngspa

解决办法
基于视口单位的解决方案只适用于在视口中居中的场景。)code

main {
     width: 18em;
     padding: 1em 1.5em;
     margin: 50vh auto 0;
     transform: translateY(-50%);
    }

基于 Flexbox 的解决方案orm

body {
 display: flex;
 min-height: 100vh;
 margin: 0;
}
main {
 margin: auto;
}

借助 Flexbox 规范
所引入的 align-items 和 justify-content 属性,咱们能够让它内部的文
本也实现居中
main {
display: flex;
align-items: center;
justify-content: center;
width: 18em;
height: 10em;
}blog

根据盒对齐模型(第三版)(http://w3.org/TR/css-align-3)的计划,在将来,对于简单的垂直居中需求,咱们彻底不须要动用特殊的布局模式了。由于只须要下面这行代码就能够搞定:图片

align-self: center;
相关文章
相关标签/搜索