CSS - 保证金最高50%超过50%

 happy玛奇朵_387 发布于 2023-02-10 14:03

我想要一个通过百分比的操作边缘的子div.y位置应为父div的50%.但它在某种程度上更多.为什么不是50%?

小提琴

HTML

CSS

.content {
  width: 300px;
  height: 200px;
  background: blue;
  position: relative;
  clear: both;
 }

.content header {
   width: 100px;
   height: 100px;
   margin-top: 50%;
   background: red;
   position: relative;
   float: left;
}

Terry.. 16

这是因为当以百分比形式显示顶部/底部边距和填充时,这些值将被视为父元素的小数宽度,而不是高度.根据W3C的定义:

[margin]百分比是根据生成的框的包含块的宽度计算的.请注意,对于"margin-top"和"margin-bottom"也是如此.如果包含块的宽度取决于此元素,则在CSS 2.1中未定义结果布局.

这个问题之前已在StackOverflow中得到解决 - 请参见此处.


建议:如果要将元素垂直放置在中心,可以使用以下技巧:

    绝对定位子元素

    声明父级的维度,使父级的维度不依赖于子级的维度

    将子元素从顶部放置50%

    使用CSS 2D翻译的漂亮技巧.

这是你的小提琴中修改过的CSS有效:

.content header {
    width: 100px;
    height: 100px;
    top: 50%;
    background: red;
    position: absolute;
    -webkit-transform: translate(0, -50%);
    transform: translate(0, -50%);
}

http://jsfiddle.net/teddyrised/73xkT/7/

1 个回答
  • 这是因为当以百分比形式显示顶部/底部边距和填充时,这些值将被视为父元素的小数宽度,而不是高度.根据W3C的定义:

    [margin]百分比是根据生成的框的包含块的宽度计算的.请注意,对于"margin-top"和"margin-bottom"也是如此.如果包含块的宽度取决于此元素,则在CSS 2.1中未定义结果布局.

    这个问题之前已在StackOverflow中得到解决 - 请参见此处.


    建议:如果要将元素垂直放置在中心,可以使用以下技巧:

      绝对定位子元素

      声明父级的维度,使父级的维度不依赖于子级的维度

      将子元素从顶部放置50%

      使用CSS 2D翻译的漂亮技巧.

    这是你的小提琴中修改过的CSS有效:

    .content header {
        width: 100px;
        height: 100px;
        top: 50%;
        background: red;
        position: absolute;
        -webkit-transform: translate(0, -50%);
        transform: translate(0, -50%);
    }
    

    http://jsfiddle.net/teddyrised/73xkT/7/

    2023-02-10 14:06 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有