【问题标题】:Rounded corner in IE8, part of div overflowing to other div not visibleIE8中的圆角,部分div溢出到其他div不可见
【发布时间】:2012-06-01 19:17:35
【问题描述】:

我正在尝试创建一些圆角的 div(应该是按钮)。我可以使用border-radius.htc 或PIE.htc 来实现它。

我使用 margin-top 来定位它们。流向下方另一个 div 的按钮部分不可见,它应该是不可见的。查看截图:

.menu_buttons{
       margin-top:45px;
       overflow: visible;
       margin-left: 10px;
       width: 85px;
       height: 3em;
       vertical-align: middle; 
       float:left;
       cursor: pointer;
       text-align: center;
       font: 0.9em Arial, Helvetica, sans-serif;

       border-radius: 10px;
       behavior: url(PIE.htc);

}

.对角线:

.diagonal{

    background-image: linear-gradient(left top, #CFD993 30%, #8DA900 68%);
    background-image: linear-gradient(-45deg, #CFD993 30%, #8DA900 68%);
    background-image: -o-linear-gradient(left top, #CFD993 30%, #8DA900 68%);
    background-image: -moz-linear-gradient(-45deg left top, #CFD993 30%, #8DA900 68%);
    background-image: -webkit-linear-gradient(135deg, #CFD993 30%, #8DA900 68%);
    background-image: -ms-linear-gradient(left top, #CFD993 30%, #8DA900 68%);
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#CFD993', endColorstr='#8DA900', GradientType=1); 
    /*background: #CFD993;*/


    background-image: -webkit-gradient(
            linear,
            left top,
            right bottom,
            color-stop(0.3, #CFD993),
            color-stop(0.68, #8DA900)
    );

}

我的部分html:

<div class="diagonal" id="section1">
        <img alt="SMIC Service Management In the Cloud" src="/images/smic_small.png" id="smic">        
        <div class="link_menu">
            <button class="menu_buttons ui-corner-all smic_green" id="overview">Overview</button>
            <!--Some more <div....-->
            <button class="menu_buttons ui-corner-all smic_green" id="usage_benchmark">SMICloud<br>usage<br>benchmark</button>            
            <a class="menu_items" id="get_smic">Get SMICloud</a>
            <!--Some more <a....-->
            <a class="menu_items" id="contact">Contact</a>
         </div>  

    </div>

将以下内容添加到 .diagonal 会根据以下屏幕截图更改外观:

position: relative;
z-index: -1;

当尝试将 z-index -10 添加到 #section1 下方的 div 时,没有任何反应。

我完全被困住了。我该如何做到这一点,创建一个圆角的 div 溢出到另一个 div?

【问题讨论】:

  • 我推荐CSS3Pie 作为 IE 中圆角的最佳解决方案。它还使用 HTC 文件,就像您的示例中的文件一样,但它很容易成为最好的文件。此外,它还处理 CSS 框阴影和渐变。此外,如果您仍有问题,CSS3Pie 网站提供了一些避免常见问题的好技巧。
  • 刚刚也试过了。我对上面做了一些更改,而不是使用相对位置,我尝试使用 margin-tops 定位 div(现在是按钮),现在我可以正确定位它。现在的问题是按钮仅在#section1 中可见,它在流到下面的 div 的地方被剪切并且不可见(溢出:可见;没有帮助)。

标签: html css internet-explorer-8 rounded-corners


【解决方案1】:

您应该将定义分开,以防止出现奇怪的行为并节省调试时间。

没有剩余的CSS 用于您提供的元素,您可以看到一个工作示例,在所有提到的浏览器上进行了全面测试,使用您对div.menu_buttons 的定义:

看到这个Working Example!

CSS

.curved {
  -moz-border-radius:10px;        /* Firefox */
  -webkit-border-radius:10px;     /* Safari and chrome */
  -khtml-border-radius:10px;      /* Linux browsers */
  border-radius:10px;             /* CSS3 */
  behavior:url(border-radius.htc) /* Internet Explorer */
}

.menu_buttons {
  position:relative;
  top: 20px;
  margin-left: 10px;
  width: 85px;
  height: 60px;
  float:left;
  vertical-align: middle;    
  cursor: pointer;
  text-align: center;
  font: 0.9em Arial, Helvetica, sans-serif;
}

示例 HTML

<div class="menu_buttons curved">.menu_buttons element</div>

下载border-radius.htc,查看CSS curved corner Demos and Page


已测试

Windows XP 专业版 2002 Service Pack 3

  • Internet Explorer 8.0.6001.18702
  • Opera 11.62
  • 火狐 3.6.16
  • Safari 5.1.2
  • 谷歌浏览器 18.0.1025.168 m
  • K-Meleon 1.5.4

Windows 7 家庭版服务包 1

  • Internet Explorer 9.0.8112.164211C
  • Opera 11.62
  • 火狐12.0
  • Safari 5.1.4
  • 谷歌浏览器 18.0.1025.168 m

Linux Ubuntu 12.04

  • 火狐12.0
  • Chromium 18.0.1025.151(开发者内部版本 130497 Linux)

已编辑

与 OP 评论有关 CSS position 的强制设备的评论。

Working example 用于带圆角的 div,没有设置position


已编辑

经过一番交谈后的最终修复是正确声明 CSS position 用于元素包装器和元素本身。

Fiddle Example 带有正确的 CSS 声明!

【讨论】:

  • 谢谢,我确实检查了所有这些。如前所述,我也确实让它工作了。我现在意识到的是,当我删除所有位置时:相对;来自除身体以外的所有父母,然后它就起作用了。不要认为它与它位于另一个 div 上有关。更新我的问题。这与组件的说明直接矛盾。
  • @Nicsoft,请检查我对 EDITED 部分的回答是否有指向相同解决方案的链接而不使用 CSS position
  • 似乎我们是并行执行的 :) 检查我更新的答案,我现在确实喜欢这样。面对另一个问题,更新了我的问题以反映这一点。
  • @Nicsoft,你不断地用一个新问题更新你的问题,这是对 SackOverflow 的不好使用......但是,你有链接或者你可以放置一个新问题的屏幕截图吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-25
  • 2011-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-22
  • 1970-01-01
相关资源
最近更新 更多