【发布时间】:2016-01-16 07:50:20
【问题描述】:
在我的 react.JS 项目中,我有一个 div。这个 div 有一个按钮和一个列表。这个列表清楚地标有 id="results"。
return <div>
<Button label="Combine Cards" disabled={!this.props.combineReady} onClick={this.handleClick} accent primary raised />
<br />
<ul >
{ JSON.parse(this.state.data).resultCards.map(function(card){
return <li id="results">{card.deviation} <img src={'https://image.deckbrew.com/mtg/multiverseid/123456.jpg'}/></li>;
}) }
</ul>
</div>;
我不满意的styles.css文件看起来像这样;
/* The list container. */
ul{
list-style: none;
display: inline-block;
width: 263px;
text-align: left;
}
/* The individual list items. */
ul li{
display: block;
padding: 15px 20px;
background-color: #F8F8F8;
color: #7B8585;
margin-bottom: 3px;
position: relative;
transition: 0.3s;
}
/* The card images within the list items. */
ul li img{
/*height: 200px;*/
transform: scale(0.6, 0.6);
-ms-transform: scale(0.6, 0.6);
-webkit-transform: scale(0.6, 0.6);
align: top;
padding: 3px;
transition: 0.3s;
}
/* Those images when hovered over. */
ul li img:hover{
/*height: 311px*/
transform: scale(1, 1);
-ms-transform: scale(1, 1);
-webkit-transform: scale(1, 1);
}
ul li a{
position: absolute;
left: 160px;
font-size: 12px;
line-height: 16px;
color: #969d9d;
}
/* The individual list items when hovered over. */
ul li:hover{
background-color:#d8f2f1;
}
li#results{
display: inline !important;
background-color: #7B8585 !important;
color: #F8F8F8 !important;
height: 200px !important;
overflow: visible !important;
}
底部是一个名为 li#results 的样式。我尝试了 ul#results li、#results、ul li#results,但没有什么能让该死的结果列表风格发生变化。我什至告诉它这很重要。我尝试将列表容器标记为<ul 'id=results' /> 并关闭它。那也失败了。以晦涩的 CSS 名义,我做错了什么?
(我还有两个不是结果的列表,所以我也不能只更改列表样式。)
这是生成的 html:
<div data-reactid=".0.0.0.1.0">
<button class="style__raised___3-PWA style__primary___zmQdT" data-react-toolbox="button" data-reactid=".0.0.0.1.0.0">
<span data-reactid=".0.0.0.1.0.0.1">Combine Cards</span>
<span data-react-toolbox="ripple" class="style__wrapper___VXsUA" data-reactid=".0.0.0.1.0.0.2:1">
<span role="ripple" class="style__normal___K1YSF" style="transform: translate3d(-207.688px, -199.32px, 0px) scale(1); width: 398.25px; height: 398.25px;" data-reactid=".0.0.0.1.0.0.2:1.0"></span>
</span>
</button>
<br data-reactid=".0.0.0.1.0.1">
<ul data-reactid=".0.0.0.1.0.2" id="results">
<li data-reactid=".0.0.0.1.0.2.0">
<span data-reactid=".0.0.0.1.0.2.0.0">0.8743035007251114</span>
<span data-reactid=".0.0.0.1.0.2.0.1"> </span>
<img src="https://image.deckbrew.com/mtg/multiverseid/126204.jpg" data-reactid=".0.0.0.1.0.2.0.2">
</li>
<li data-reactid=".0.0.0.1.0.2.1">
<span data-reactid=".0.0.0.1.0.2.1.0">0.8663643850889716</span>
<span data-reactid=".0.0.0.1.0.2.1.1"></span>
<img src="https://image.deckbrew.com/mtg/multiverseid/373708.jpg" data-reactid=".0.0.0.1.0.2.1.2">
...8 more lines.
</li>
</ul>
</div>
那是<ul id="results"/>。使用<li id="results"/>,id 标签只会移动到所有行元素。使用<ul class="results"/> 我什么都看不到,根本看不到 id 或 class。
【问题讨论】:
-
ID 应该是唯一的,使用类代替。
-
@Tushar:虽然这一点是正确的,但 CSS 通常会使用
id设置所有元素的样式,即使使用相同的 id 也是如此。我觉得这里可能还有其他问题。 -
@IronWaffleMan:您能否获取(从控制台)生成的最终 HTML 并将其包含在内或创建一个演示?如果我用一个虚拟列表(即使所有的 id 相同)尝试你的 CSS,它也可以工作。
-
添加了包含列表的 div 的 html。
-
我刚刚根据您的 css 和生成的 html 创建了 a fiddle,将
li#results更改为#results li并应用了样式。还可以在lis 上设置id="results"并使用您发布的 css 工作。所以不确定到底是什么问题......我可以看到background-color没有应用于整个li,但这是因为display:inline !important;
标签: javascript html css reactjs