css中margin没有效果

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了css中margin没有效果相关的知识,希望对你有一定的参考价值。

好诡异啊,写了一段代码,margin不起作用,但是重新建了文件,复制过去就起作用了,我一遍遍对比了两边代码,连冒号和分号都重新写了一遍,什么原因?

样式定义采取就近原则,如果多个样式定义都是针对某个标签的,那离该标签最近的样式生效。就你的问题看来,可能该样式定义的后面有重复的margin定义覆盖了它的效果。由于你给的信息过少,请自行在浏览器中按F12,查看是哪个margin定义生效中,然后进行更改。追问

html+css

参考技术A 这个要结合html代码才能看出原因。 参考技术B 第一张图第四行的点是什么,如果可以能把代码发上来吗,看不是很清 参考技术C 看看是不是设置过其他优先级高的属性所以不起作用了
id>class

CSS:左边距的 IE 9 hack? \9;没有效果

【中文标题】CSS:左边距的 IE 9 hack? \\9;没有效果【英文标题】:CSS: IE 9 hack for margin-left? \9; has no effectCSS:左边距的 IE 9 hack? \9;没有效果 【发布时间】:2013-02-19 09:17:32 【问题描述】:

我有一个当前有margin-left: -110px 的元素,当然,这适用于我在除 IE 之外的所有浏览器中的设计。使用 IE 我需要做到margin-left: 10px

通常,我会通过添加\9; 来完成我的 IE hack,例如:

margin-left: 10px\9;

但它似乎不适用于边距。有谁知道实现这一目标的方法?非常感谢!

<div id="nav">
  <ul>
    <li id="newstab">News</li>
    <li id="offerstab">Offers</li>
    <li id="specialsstab">Specials</li>
  </ul>
</div>

#nav 
    position:absolute;
    margin-left: -110px;
margin-left: 10px\9;
    margin-top: 160px;
    writing-mode:tb-rl;
    -webkit-transform:rotate(90deg);
    -moz-transform:rotate(90deg);
    -o-transform: rotate(90deg);
    white-space:nowrap;

【问题讨论】:

我敢打赌,您需要为 IE9 使用不同的 CSS,因为您的标记无效/损坏。 IE9 通常不需要像这样的 hack。 顺便说一句,它对我来说很好用:jsfiddle.net/teLRA 你是否重新声明了margin-left hack 之后? @WesleyMurch 是的,从技术上讲,你是对的。我的左边距实际上是-100px;浏览器 请发布不起作用的实际 HTML 和 CSS。 @WesleyMurch 添加在上面 【参考方案1】:

如果确实需要,可以使用 IE 条件块:

<link href="style.css" rel="stylesheet" />

<!--[if lt IE 10]>
    <style type="text/css">
        .thing 
            margin-left: 10px;
        
    </style>
<![endif]-->

【讨论】:

嗯,不走运!奇怪...如果我进入 IE 的开发工具并找到元素并更改它的工作原理。它只是忽略了样式表上的技巧 @MeltingDog 从你所说的听起来你实际上并没有尝试过这个答案(尽管不可否认,这不是一个直接的答案)。要么,要么你不确定你期望看到什么效果。 @WesleyMurch 是的,我确实尝试了答案,并尝试了几个类似的版本。你的本意是写在 HTML 文档的标题上,对吧?【参考方案2】:

发现是

 writing-mode:tb-rl;

IE 不喜欢。

这个网站很有用:

http://www.useragentman.com/IETransformsTranslator/

【讨论】:

【参考方案3】:
.class 
     text-align:right;

     @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) 

     margin-left: 30px

     
     margin-left: 90px;
 

您可以为 IE 编写特定的 css,然后为其他浏览器覆盖其他 css。

【讨论】:

【参考方案4】:

你可以这样使用

<!--[if lte IE 7]> <html class="ie7"> <![endif]-->  
<!--[if IE 8]>     <html class="ie8"> <![endif]-->  
<!--[if IE 9]>     <html class="ie9"> <![endif]-->  
<!--[if !IE]><!--> <html>             <!--<![endif]-->

然后在您的 CSS 中,您可以像这样定位 IE7、IE8 或 IE9:

   .element   
        margin-left: 20px;  
      

    .ie7 .element   
        margin-left: 10px;  
      

    .ie8 .element   
        margin-left: 15px;  
      
    .ie9 .element   
        margin-left: 10px;  
     

现在每个浏览器的相关元素的左边距为 20px,但 IE7、IE8 和 IE0 的左边距分别为 10px、15px 和 10px。

【讨论】:

\9 hack 已经起作用了,这是问题的主题。【参考方案5】:

你为什么要使用 margin-left,而你也使用 position:absolute? 使用绝对位置时,您永远不会获得所需的边距效果(但这不是 实际 问题)。

使用绝对位置时,您应该始终定义元素默认基准点,该基准点至少包含一个顶部/底部和左侧/右侧位置 - 在您的情况下,顶部:0;左:110px; (这是假设绝对定位的元素在 position:relative; 父容器内)。

您允许浏览器假设您想要显示的内容,而不是实际定义和告诉浏览器您想要显示的内容 - 您应该在 CSS 中构建的所有内容上都做到这一点。

在没有使用绝对定位严格定义元素的位置时,你是在 IE(尤其是 IE9)中自找麻烦。

【讨论】:

以上是关于css中margin没有效果的主要内容,如果未能解决你的问题,请参考以下文章

CSS:左边距的 IE 9 hack? \9;没有效果

Css有一个问题,好长时间都没解决,内联元素使用margin和padding有没有效果? 百度

css盒子模型3

margin 负边距 的知识点

css 为啥有时MARGIN 不起作用,

css中负值(px)的问题有啥?