在这种情况下如何为 Star Rating 写 CSS?
how to write CSS for Star Rating in this scenario?
陷入半星评级问题 CSS。我参考了 http://codepen.io/mrk1989/pen/mLeHJ
我的Html星展结构就是这样
<ul class="rateChange">
<li>
<input type="radio" id="rating10" name="rating" value="10" />
<label for="rating10" title="5 stars"></label>
<input type="radio" id="rating9" name="rating" value="9" />
<label class="half" for="rating9" title="4 1/2 stars"></label>
</li>
<li>
<input type="radio" id="rating8" name="rating" value="8" />
<label for="rating8" title="4 stars"></label>
<input type="radio" id="rating7" name="rating" value="7" />
<label class="half" for="rating7" title="3 1/2 stars"></label>
</li>
<li>
<input type="radio" id="rating6" name="rating" value="6" />
<label for="rating6" title="3 stars"></label>
<input type="radio" id="rating5" name="rating" value="5" />
<label class="half" for="rating5" title="2 1/2 stars"></label>
</li>
<li>
<input type="radio" id="rating4" name="rating" value="4" />
<label for="rating4" title="2 stars"></label>
<input type="radio" id="rating3" name="rating" value="3" />
<label class="half" for="rating3" title="1 1/2 stars"></label>
</li>
<li>
<input type="radio" id="rating2" name="rating" value="2" />
<label for="rating2" title="1 star"></label>
<input type="radio" id="rating1" name="rating" value="1" />
<label class="half" for="rating1" title="1/2 star"></label>
</li>
</ul>
在我的例子中,星星位于 ul li 标签下,我如何更改我的 css 以获得上面 link 中给出的所有 css 功能(就像点击所有上一个和当前的星星处于开启状态并且悬停所有星星之前和当前开始显示悬停效果)。
这是 jsfiddle link,我正在其中做一些事情 https://jsfiddle.net/ae0ypksv/
未实现全部功能。
非常感谢您的帮助..!!谢谢
你必须把你所有的 input/label 放在一个 <li>
里,比如 this
<h1>Half Star Rating Change Senirow</h1>
<ul class="rateChange">
<li>
<input type="radio" id="rating10" name="rating" value="10" />
<label for="rating10" title="5 stars"></label>
<input type="radio" id="rating9" name="rating" value="9" />
<label class="half" for="rating9" title="4 1/2 stars"></label>
<input type="radio" id="rating8" name="rating" value="8" />
<label for="rating8" title="4 stars"></label>
<input type="radio" id="rating7" name="rating" value="7" />
<label class="half" for="rating7" title="3 1/2 stars"></label>
<input type="radio" id="rating6" name="rating" value="6" />
<label for="rating6" title="3 stars"></label>
<input type="radio" id="rating5" name="rating" value="5" />
<label class="half" for="rating5" title="2 1/2 stars"></label>
<input type="radio" id="rating4" name="rating" value="4" />
<label for="rating4" title="2 stars"></label>
<input type="radio" id="rating3" name="rating" value="3" />
<label class="half" for="rating3" title="1 1/2 stars"></label>
<input type="radio" id="rating2" name="rating" value="2" />
<label for="rating2" title="1 star"></label>
<input type="radio" id="rating1" name="rating" value="1" />
<label class="half" for="rating1" title="1/2 star"></label>
</li>
</ul>
这是我已经解决的解决方案,请检查一下...
body {
margin: 5%;
text-align: center;
background: aliceblue;
color: darkred;
}
h1 {
font-size: 2em;
margin-bottom: .5rem;
}
/* Ratings widget */
.rate {
display: inline-block;
border: 0;
}
/* Hide radio */
.rate > input {
display: none;
}
/* Order correctly by floating highest to the right */
.rate > label {
float: right;
}
/* The star of the show */
.rate > label:before {
display: inline-block;
font-size: 50px;
padding: .3rem .2rem;
margin: 0;
cursor: pointer;
font-family: FontAwesome;
content: '05'; /* full star */
}
/* Zero stars rating */
.rate > label:last-child:before {
content: '05' ; /* empty star outline */
}
input:checked ~ label, /* color current and previous stars on checked */
label:hover, label:hover ~ label { color: #73B100; } /* color previous stars on hover */
/* Hover highlights */
input:checked + label:hover, input:checked ~ label:hover, /* highlight current and previous stars */
input:checked ~ label:hover ~ label, /* highlight previous selected stars for new rating */
label:hover ~ input:checked ~ label /* highlight previous selected stars */ { color: #A6E72D; }
<html>
<head>
<title>Rating</title>
<link type="text/css" href="style.css" rel="stylesheet">
</head>
<body>
<h1>Star Rating By Md.Sabbirul Islam</h1>
<fieldset class="rate">
<input type="radio" id="rating10" name="rating" value="10" /><label for="rating10" title="5 stars"></label>
<input type="radio" id="rating8" name="rating" value="8" /><label for="rating8" title="4 stars"></label>
<input type="radio" id="rating6" name="rating" value="6" /><label for="rating6" title="3 stars"></label>
<input type="radio" id="rating4" name="rating" value="4" /><label for="rating4" title="2 stars"></label>
<input type="radio" id="rating2" name="rating" value="2" /><label for="rating2" title="1 star"></label>
<input type="radio" id="rating0" name="rating" value="0" /><label for="rating0" title="No star"></label>
</fieldset>
</body>
</html>
陷入半星评级问题 CSS。我参考了 http://codepen.io/mrk1989/pen/mLeHJ
我的Html星展结构就是这样
<ul class="rateChange">
<li>
<input type="radio" id="rating10" name="rating" value="10" />
<label for="rating10" title="5 stars"></label>
<input type="radio" id="rating9" name="rating" value="9" />
<label class="half" for="rating9" title="4 1/2 stars"></label>
</li>
<li>
<input type="radio" id="rating8" name="rating" value="8" />
<label for="rating8" title="4 stars"></label>
<input type="radio" id="rating7" name="rating" value="7" />
<label class="half" for="rating7" title="3 1/2 stars"></label>
</li>
<li>
<input type="radio" id="rating6" name="rating" value="6" />
<label for="rating6" title="3 stars"></label>
<input type="radio" id="rating5" name="rating" value="5" />
<label class="half" for="rating5" title="2 1/2 stars"></label>
</li>
<li>
<input type="radio" id="rating4" name="rating" value="4" />
<label for="rating4" title="2 stars"></label>
<input type="radio" id="rating3" name="rating" value="3" />
<label class="half" for="rating3" title="1 1/2 stars"></label>
</li>
<li>
<input type="radio" id="rating2" name="rating" value="2" />
<label for="rating2" title="1 star"></label>
<input type="radio" id="rating1" name="rating" value="1" />
<label class="half" for="rating1" title="1/2 star"></label>
</li>
</ul>
在我的例子中,星星位于 ul li 标签下,我如何更改我的 css 以获得上面 link 中给出的所有 css 功能(就像点击所有上一个和当前的星星处于开启状态并且悬停所有星星之前和当前开始显示悬停效果)。
这是 jsfiddle link,我正在其中做一些事情 https://jsfiddle.net/ae0ypksv/ 未实现全部功能。
非常感谢您的帮助..!!谢谢
你必须把你所有的 input/label 放在一个 <li>
里,比如 this
<h1>Half Star Rating Change Senirow</h1>
<ul class="rateChange">
<li>
<input type="radio" id="rating10" name="rating" value="10" />
<label for="rating10" title="5 stars"></label>
<input type="radio" id="rating9" name="rating" value="9" />
<label class="half" for="rating9" title="4 1/2 stars"></label>
<input type="radio" id="rating8" name="rating" value="8" />
<label for="rating8" title="4 stars"></label>
<input type="radio" id="rating7" name="rating" value="7" />
<label class="half" for="rating7" title="3 1/2 stars"></label>
<input type="radio" id="rating6" name="rating" value="6" />
<label for="rating6" title="3 stars"></label>
<input type="radio" id="rating5" name="rating" value="5" />
<label class="half" for="rating5" title="2 1/2 stars"></label>
<input type="radio" id="rating4" name="rating" value="4" />
<label for="rating4" title="2 stars"></label>
<input type="radio" id="rating3" name="rating" value="3" />
<label class="half" for="rating3" title="1 1/2 stars"></label>
<input type="radio" id="rating2" name="rating" value="2" />
<label for="rating2" title="1 star"></label>
<input type="radio" id="rating1" name="rating" value="1" />
<label class="half" for="rating1" title="1/2 star"></label>
</li>
</ul>
这是我已经解决的解决方案,请检查一下...
body {
margin: 5%;
text-align: center;
background: aliceblue;
color: darkred;
}
h1 {
font-size: 2em;
margin-bottom: .5rem;
}
/* Ratings widget */
.rate {
display: inline-block;
border: 0;
}
/* Hide radio */
.rate > input {
display: none;
}
/* Order correctly by floating highest to the right */
.rate > label {
float: right;
}
/* The star of the show */
.rate > label:before {
display: inline-block;
font-size: 50px;
padding: .3rem .2rem;
margin: 0;
cursor: pointer;
font-family: FontAwesome;
content: '05'; /* full star */
}
/* Zero stars rating */
.rate > label:last-child:before {
content: '05' ; /* empty star outline */
}
input:checked ~ label, /* color current and previous stars on checked */
label:hover, label:hover ~ label { color: #73B100; } /* color previous stars on hover */
/* Hover highlights */
input:checked + label:hover, input:checked ~ label:hover, /* highlight current and previous stars */
input:checked ~ label:hover ~ label, /* highlight previous selected stars for new rating */
label:hover ~ input:checked ~ label /* highlight previous selected stars */ { color: #A6E72D; }
<html>
<head>
<title>Rating</title>
<link type="text/css" href="style.css" rel="stylesheet">
</head>
<body>
<h1>Star Rating By Md.Sabbirul Islam</h1>
<fieldset class="rate">
<input type="radio" id="rating10" name="rating" value="10" /><label for="rating10" title="5 stars"></label>
<input type="radio" id="rating8" name="rating" value="8" /><label for="rating8" title="4 stars"></label>
<input type="radio" id="rating6" name="rating" value="6" /><label for="rating6" title="3 stars"></label>
<input type="radio" id="rating4" name="rating" value="4" /><label for="rating4" title="2 stars"></label>
<input type="radio" id="rating2" name="rating" value="2" /><label for="rating2" title="1 star"></label>
<input type="radio" id="rating0" name="rating" value="0" /><label for="rating0" title="No star"></label>
</fieldset>
</body>
</html>