Heim Web-Frontend HTML-Tutorial 纯CSS实现星型⭐️评级_html/css_WEB-ITnose

纯CSS实现星型⭐️评级_html/css_WEB-ITnose

Jun 21, 2016 am 09:03 AM

今天,我们用纯CSS实现⭐️评级。

案例效果

分析:正常情况下为空心的☆,鼠标hover时,变为实心黄色的★.

HTML分析

div.star包裹5个span,每个span的内容为空心的☆.HTML代码如下:

<div class="star">    <span>☆</span><span>☆</span><span>☆</span><span>☆</span><span>☆</span>  </div>
Nach dem Login kopieren
CSS分析

1.分析:当我们hover时,我们用实心的★覆盖空心的☆,并给实心的★设置color:gold;.

要覆盖空心的☆,我们要利用为元素::before,并赋予content:'★'.同时为了实现覆盖,而不是在之前添加内容,我们需要为元素设置position:absolute;.

这时,当你hover时,hover的☆就变为实体黄色的⭐️了。

2.接下来,我们要实现当我hover某个☆时,不仅这一个,它前面的☆也都要变为黄色实体的⭐️。
首先,我们要用到通用兄弟选择器~

在使用 ~ 连接两个元素时,它会匹配第二个元素,条件是它必须跟(不一定是紧跟)在第一个元素之后,且他们都有一个共同的父元素 .
比如:div~p就会匹配与div同辈的且在div之后的所有p元素。

当我们hover某个☆时,我们利用通用兄弟选择器使后面的☆也同时变为黄色实体星⭐️。

span:hover::before,span:hover~span::before{  content:'★';  color:gold;  position:absolute;} 
Nach dem Login kopieren

这时,当你hover某个☆时,这个及其后面的☆都同时变为黄色实体星⭐️。

3.最后,我们利用unicode-bidi,direction属性,使文本由右向左显示。

The unicode-bidi CSS property together with the direction property relates to the handling of bidirectional text in a document.For example, if a block of text contains both left-to-right and right-to-left text then the user-agent uses a complex Unicode algorithm to decide how to display the text. This property overrides this algorithm and allows the developer to control the text embedding.

这样的话,当我们hover时,还是这个及其后面的☆都同时变为黄色实体星⭐️,但是由于此时从右向左显示,它的后面兄弟元素就变到“前面”来了。

.star{unicode-bidi: bidi-override;direction:rtl;}
Nach dem Login kopieren

对内联元素应用direction时要注意:

For the direction property to have any effect on inline-level elements, the unicode-bidi property's value must be embed or override.

OK.用纯CSS实现⭐️评级的效果就实现了!

CSS代码如下:

span:hover::before,span:hover~span::before{  content:'★';  color:gold;  position:absolute;} .star{  unicode-bidi:bidi-overrride;  direction:rtl;}
Nach dem Login kopieren
用js实现评级效果

思路:当元素触发onmouseover事件时,赋予不同的class值。

代码如下:

 <div class="heart">    <a href="" id="one" class="heart-off"></a>    <a href="" id="two" class="heart-off"></a>    <a href="" id="three" class="heart-off"></a>    <a href="" id="four" class="heart-off"></a>    <a href="" id="five" class="heart-off"></a>  </div>
Nach dem Login kopieren
.heart-off,.heart-on,.heart-hover{  text-decoration:none;}.heart-off:before,.heart-on:before,.heart-hover:before{  content:'\2665';}.heart-off{color:rgba(150,150,150,.5);}.heart-on{color:rgba(255,0,0,.5);}.heart-hover{color:rgba(255,0,0,1);}
Nach dem Login kopieren
one.onmouseover=function(){  this.className="heart-hover";  two.className="heart-off";  three.className="heart-off";  four.className="heart-off";  five.className="heart-off";};two.onmouseover=function(){  this.className="heart-hover";  one.className="heart-on";  three.className="heart-off";  four.className="heart-off";  five.className="heart-off";};three.onmouseover=function(){  this.className="heart-hover";  one.className="heart-on";  two.className="heart-on";  four.className="heart-off";  five.className="heart-off";};four.onmouseover=function(){  this.className="heart-hover";  one.className="heart-on";  two.className="heart-on";  three.className="heart-on";  five.className="heart-off";};five.onmouseover=function(){  this.className="heart-hover";  one.className="heart-on";  two.className="heart-on";  three.className="heart-on";  four.className="heart-on";};
Nach dem Login kopieren
参考资料

1.字符实体
2.字符集
3.[unicode-bidide的用法](https://developer.mozilla.org/en-US/docs/Web/CSS/unicode-bidi)

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Schwierigkeiten bei der Aktualisierung der Zwischenspeicherung offizieller Konto -Webseiten: Wie vermeiden Sie den alten Cache, der sich auf die Benutzererfahrung nach der Versionsaktualisierung auswirkt? Schwierigkeiten bei der Aktualisierung der Zwischenspeicherung offizieller Konto -Webseiten: Wie vermeiden Sie den alten Cache, der sich auf die Benutzererfahrung nach der Versionsaktualisierung auswirkt? Mar 04, 2025 pm 12:32 PM

Schwierigkeiten bei der Aktualisierung der Zwischenspeicherung offizieller Konto -Webseiten: Wie vermeiden Sie den alten Cache, der sich auf die Benutzererfahrung nach der Versionsaktualisierung auswirkt?

Wie verwende ich HTML5 -Formularvalidierungsattribute, um die Benutzereingabe zu validieren? Wie verwende ich HTML5 -Formularvalidierungsattribute, um die Benutzereingabe zu validieren? Mar 17, 2025 pm 12:27 PM

Wie verwende ich HTML5 -Formularvalidierungsattribute, um die Benutzereingabe zu validieren?

Wie füge ich PNG -Bildern auf Webseiten effizient Schlaganfalleffekte hinzu? Wie füge ich PNG -Bildern auf Webseiten effizient Schlaganfalleffekte hinzu? Mar 04, 2025 pm 02:39 PM

Wie füge ich PNG -Bildern auf Webseiten effizient Schlaganfalleffekte hinzu?

Was ist der Zweck des & lt; iframe & gt; Etikett? Was sind die Sicherheitsüberlegungen bei der Verwendung? Was ist der Zweck des & lt; iframe & gt; Etikett? Was sind die Sicherheitsüberlegungen bei der Verwendung? Mar 20, 2025 pm 06:05 PM

Was ist der Zweck des & lt; iframe & gt; Etikett? Was sind die Sicherheitsüberlegungen bei der Verwendung?

Was ist der Zweck des & lt; Meter & gt; Element? Was ist der Zweck des & lt; Meter & gt; Element? Mar 21, 2025 pm 12:35 PM

Was ist der Zweck des & lt; Meter & gt; Element?

Was sind die besten Praktiken für die Kompatibilität des Cross-Browsers in HTML5? Was sind die besten Praktiken für die Kompatibilität des Cross-Browsers in HTML5? Mar 17, 2025 pm 12:20 PM

Was sind die besten Praktiken für die Kompatibilität des Cross-Browsers in HTML5?

Was ist der Zweck des & lt; Fortschritts & gt; Element? Was ist der Zweck des & lt; Fortschritts & gt; Element? Mar 21, 2025 pm 12:34 PM

Was ist der Zweck des & lt; Fortschritts & gt; Element?

Wie verwende ich HTML -Links effektiv für Navigation und SEO? Wie verwende ich HTML -Links effektiv für Navigation und SEO? Mar 18, 2025 pm 02:39 PM

Wie verwende ich HTML -Links effektiv für Navigation und SEO?

See all articles