1

我正在制作一个网站,我制作了一些按钮并向它们添加了 -webkit-box-flex 属性。它工作得很好。但是,当我向其中一个按钮添加下拉菜单时,-webkit-box-flex 属性不再适用于它们并且它不起作用。谁能告诉我发生了什么?

这是一个jsfiddle:

http://jsfiddle.net/hGT6E/

*{
margin: 0px;
padding: 0px;
 }

h1{
font: bold 20px PrimaSans BT;
 }

 h2{
font: italic 14px PrimaSans BT;
  }

header, section, footer, aside, nav, article, hgroup, ul, li{
 display: block;
 }

 #wrapper{
max-width: 1000px;
margin: 20px 0px;
display: -webkit-box;
display: -moz-box;
-webkit-box-orient: vertical;
-moz-box-orient: vertical;

-webkit-box-flex: 1;
-moz-box-flex: 1;
margin-left: auto ;
margin-right: auto ;
}

#searchbox{
float: right;
margin-bottom: 10px;
}

body{
width: 100%;
margin: 0;
display:-moz-box;
-moz-box-pack: center;
display:-webkit-box;
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0,    `enter code here`#ffffff), color-stop(1, #bababa));
background-image: -moz-gradient(linear, left top, left bottom, color-stop(0, `enter code here`#ffffff), color-stop(1, #bababa));
background-repeat: no-repeat;
background-attachment: fixed;
  }

 #navigation{
display: block;
padding: 10px;
margin: 5px;
margin-bottom: 0px;
-webkit-border-radius: 15px;
width: 800px;
height: 60px;
display: -webkit-box;
-webkit-box-orient: horizontal;
display: -moz-box;
-moz-box-orient: horizontal;
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, `enter code here`#ffffff), color-stop(1, #bababa));
background-image: -moz-gradient(linear, left top, left bottom, color-stop(0, `enter code here`#ffffff), color-stop(1, #bababa));

 }

 #navigation li:hover ul{
display: block;
 }

 #navigation ul{
margin: 0px;
padding: 0px;
 }

 #navigation li{
position: relative;
float: left;
list-style-type: none;
 }

 #navigation ul:after{
display: block;
clear: both;
visibility: hidden;
 }

  #navigation li a{
text-decoration: none;
display: block;
color: black;
border-right: 1px solid grey;
padding: 10px 25px;

 }

  #navigation ul ul{
position: absolute;
border: 20px;
left: 0px;
width: 125px;
display: none;
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, `enter code here`#ffffff), color-stop(1, #bababa));
  }

  #navigation ul ul li{
border: 1px solid grey;
width: 99%;
-webkit-transition: background 2s
  }

   #navigation ul ul li:hover{
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, `enter code here`#fffc01), color-stop(1, #ffde00));
  }

 #navigation ul ul li a{
border-right: none;
  }

  .navigation_button{
font: bold 18px PrimaSans BT;
-webkit-box-flex: 1;
width: 100px;
padding: 10px;
margin: 10px;
text-align: center;
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, `enter code here`#ffffff), color-stop(1, #bababa));
background-image: -moz-gradient(linear, left top, left bottom, color-stop(0, `enter code here`#ffffff), color-stop(1, #bababa));
-webkit-border-radius: 10px;
-webkit-transition: -webkit-transform 2s, opacity 2s, background 2s, scale 2s,
  }

   .navigation_button:hover{
-webkit-transform: scale(1.05);
opacity: 1;
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, `enter code here`#fffc01), color-stop(1, #ffde00));
background-image: -moz-gradient(linear, left top, left bottom, color-stop(0, `enter code here`#fffc01), color-stop(1, #ffde00));
 }

 #main_section{
border: 1px solid grey;
width: 750px;
margin-left: 40px;
margin-right: 30px;
border-top: 0px;
height: 800px;
margin-bottom: 10px;
-webkit-border-bottom-right-radius: 10px;
-webkit-border-bottom-left-radius: 10px;
background-color: #f1f1f1;
-webkit-box-flex: 1;
 }

 .article_1{
border: 1px solid gray;
background: white;
-webkit-box-flex: 1;
margin-left: 10px;
margin-right: 10px;
margin-top: 10px;
padding: 10px;
  }

  .article_1_footer{
text-align: right;
  }

  #footer{
text-align: center;
font: italic 12px Times New Roman
  }

谢谢!

4

2 回答 2

0

box-flex属性(现代名称:)flex仅适用于flex items的项目。为了成为一个弹性项目,它的父元素必须是一个弹性容器(显示值为box/flexbox/flex)。元素的.navigation_button父元素是ul#nav_menu,它的显示类型是块。

http://jsfiddle.net/hGT6E/1/

#nav_menu {
    display: -webkit-box;
    width: 100%;
}

我必须警告不要依赖这些可用的属性。它们来自 2009 年的 Flexbox 规范,并且可能会在不久的将来被删除。如果您需要它们支持旧的移动浏览器,请确保您还为每个属性提供现代版本。

于 2013-03-14T18:55:04.447 回答
-1

就像 Cimmanon 之前解释的那样,

#parent {
    /* the parent has to be setup */
    display: -webkit-box;
    display: -moz-box;
    display: -o-box;
    display: box;
}

#child {
    /* for the child to behave correctly */
    -webkit-flex-box: 1;
    -moz-flex-box: 1;
    -o-flex-box: 1;
    flex-box: 1;
}

您是否在不受支持的浏览器中查看它?

某些特定于供应商的前缀可能会丢失(相对于您的浏览器可访问性范围)。

这是一些使用 flex 的新学校示例方法(从bennettfeely.com/flexplorer生成);

.flex-container {
    display: -webkit-flex;
    display: -moz-flex;
    display: -ms-flex;
    display: flex;
    -webkit-flex-flow: row wrap;
    -moz-flex-flow: row wrap;
    -ms-flex-direction: row;
    -ms-flex-wrap: wrap;
    -ms-flex-flow: row wrap;    
    flex-flow: row wrap;
}

.flex-item {
    -webkit-flex:1 auto;
    -moz-flex:1 auto;
    -ms-flex:1 auto;
    flex:1 auto;
}

您可以查看Caniuse上的 flex 浏览器支持

用户 Cimmanon 提出的观点,前缀选择器可能与您的问题无关,但不知何故,在阅读了您的 .css 声明后,我注意到您没有设置“基本”CSS3 声明 (dispaly:box; flex-box:1; )。所以我想了一秒钟,这可以解释你的情况,但事实并非如此。

于 2013-03-14T19:09:55.180 回答