在CSS中使用百分比边距,但想要最小边距以像素为单位?

问题描述 投票:39回答:11

我已经设置了margin: 0 33% 0 0;,但是我还要确保保证金是至少某个px金额。我知道CSS中没有min-margin,所以我想知道这里是否有任何选项?

css margin
11个回答
19
投票

在元素的右侧放置div,其中[%]为%width,静态min-width

<div style="position:relative; float:left; margin:0">
<div style="position:relative; float:left; width:33%; min-width:200px">

34
投票

这里真正的解决方案是使用媒体查询断点来确定何时33%的像素不再对您有用,并且应该被最小边距(以像素为单位)覆盖。

/*Margin by percentage:*/
div{
    margin: 0 33% 0 0;
}

/*Margin by pixel:*/
@media screen and ( max-width: 200px ){
    div{
        margin: 0 15px 0 0;
    }
}

在上面的代码中,将max-width更改为33%右边距不再适用的任何屏幕宽度。


19
投票

您可以尝试这个

.mm:before {
    content: "";
    display: inline-block;
    width: 33%;
    min-width: 200px;
}

4
投票

Carl Papworth,在这种情况下,您可以使用此:

body {margin-left: 60px; margin-right: 60px; width:calc(100%-120px); }
div#container {width:33%;}

1
投票

如果您使用的是span,那么您必须这样做:

span{
display:block;
margin:auto;
}

working demo

如果您使用的是div,那么您可以执行此操作:

div{
  margin:auto;
}

1
投票

怎么样?

body {margin-left: 60px; margin-right: 60px; }
div#container {width:33%;}

0
投票

我已经使用了前面提到的几种解决方案,但是在流畅,真正响应的环境中,我认为最好的选择是在相应的容器/包装器上设置适当的填充物。例:样式:

 html {
   background-color: #fff;
   padding: 0 4em;
 }
 body {
   margin: 0 auto;
   max-width: 42em;
   background-color: #ddf;
 }

现在以各种窗口宽度播放,并尝试各种字体大小。

也尝试working demo


0
投票

您可以将您的商品保留在“容器” div中,并将填充设置为您想要的“最小利润”。它可能不完全是您要寻找的内容,但是它给了您最小保证金大小的感觉。

<div class="container">
   <div class="your_div_with_items">
   'items'
   </div>
</div>

然后是CSS:

.container
{
   padding: 0 'min_margin_ammount' 0 0;
}

.your_div_with_items
{
   margin: 0 33% 0 0;
}

0
投票

据我了解,您可以在元素周围放置一个div,以定义填充。外部元素的填充就像内部元素的空白。

想象您希望至少有1px的边距:

<div style="padding:1px">
  <div style="margin: 0 33% 0 0;">
      interesting content
  </div>
</div>

编辑:这就像伊米加斯的答案,但我认为更容易理解。


0
投票

也可以测试屏幕宽度/高度的一定百分比是否小于以像素为单位的长度。

这是使用JavaScript的简单解决方案:

<body>
 <div id="demo">
  <p> Hello World! </p>
 </div>

 <script>
  if (((window.innerWidth / 100) * 33) < 250) { /* Gets 33% of window width in pixels, tests if it is less than required minimum length (250px) */
  document.getElementById("demo").style.margin = "0 250px 0 0" /* If true, set margin to length in pixels */
  } else {
   document.getElementById("demo").style.margin = "0 33% 0 0" /* If not true, the widow is big enough and percentage length is set */
   }
 </script>
</body>

0
投票

我知道比赛已经很晚了,但是您尝试过吗?

margin: 0 max(33%, 20px) 0 0

其中20px无论您希望至少具有一定数量的像素。因此,边距将保持流畅,但永远不会低于20px

希望有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.