鉴于下面的SVG,我尝试使用CSS来允许人们将鼠标悬停在tspan.hovertext
内的g#Main_Layer
个分类元素上,以取消隐藏g
中不相关的#Hover_Panels
元素。见下文:
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 20.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="1280px"
height="1569.2px" viewBox="0 0 1280 1569.2" style="enable-background:new 0 0 1280 1569.2;" xml:space="preserve">
<style type="text/css">
text{font-family:'Lato';font-weight:300;}
#Hover_Text {
text-transform: uppercase;
}
.st0{fill:#404041;}
.st1{font-family:'Lato';font-weight:300;}
.st5{font-family:'Lato';font-weight:400;}
.st6{font-size:20px;}
.st7{fill:none;stroke:#5880AC;stroke-width:1.073;}
.st22{display:none;}
.st23{display:inline;fill:#016699;}
.st24{font-size:26.44px;}
.hovertext {
cursor: pointer;
}
.hovertext:hover {
font-weight: bold;
}
.hovertext:hover + #Hidden_Text {
display: block;
}
</style>
<g id="Main_Layer">
<text id="Hover_Text" transform="matrix(1 0 0 1 1044.0001 878.011)">
<tspan x="0" y="0" class="st4 st5 st6">hover </tspan>
<tspan x="0" y="180" class="hovertext st4 st1 st6">HOVER TEXT</tspan>
</text>
</g>
<g id="Hover_panels">
<g id="Default_Text" >
<text transform="matrix(1 0 0 1 459.2306 1051.639)">
<tspan x="0" y="0" class="st16 st1 st19">Default Text </tspan>
</text>
</g>
<g id="Hidden_Text" class="st22">
<text transform="matrix(1 0 0 1 566.0988 1163.5396)" class="st23 st1 st24">Hidden Text</text>
</g>
</g>
</svg>
问题是我并不完全控制XML布局(由我们的设计师提供的Illustrator生成),并且由于我希望我可以在这里讨论的原因,我们无法使用Javascript来实现此效果。
当仅使用CSS时,如何将鼠标悬停在.hovertext元素上,将display: block
添加到#Hidden_Text
元素,并隐藏#Default_Text
元素?
谢谢!
答案 0 :(得分:1)
单独使用CSS是不可能指定不在(“+”运算符)之后或之下(某些子代)的元素。
但您可以使用visibility: collapse
代替display: none
#Hidden_Text
(看起来一样)并在<set>
中定义#Hidden_Text
动画集如果文本悬停,则此属性为visible
。您需要将隐藏文本包装在<tspan>
中并将id应用于hovertext以使其成为可能:
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 20.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="1280px"
height="1569.2px" viewBox="0 0 1280 1569.2" style="enable-background:new 0 0 1280 1569.2;" xml:space="preserve">
<style type="text/css">
text{font-family:'Lato';font-weight:300;}
#Hover_Text {
text-transform: uppercase;
}
.st0{fill:#404041;}
.st1{font-family:'Lato';font-weight:300;}
.st5{font-family:'Lato';font-weight:400;}
.st6{font-size:20px;}
.st7{fill:none;stroke:#5880AC;stroke-width:1.073;}
.st22{visibility: collapse;}
.st23{display:inline;fill:#016699;}
.st24{font-size:26.44px;}
.hovertext {
cursor: pointer;
}
.hovertext:hover {
font-weight: bold;
}
.hovertext:hover + #Hidden_Text {
display: block;
}
</style>
<g id="Main_Layer">
<text id="Hover_Text" transform="matrix(1 0 0 1 1044.0001 878.011)">
<tspan x="0" y="0" class="st4 st5 st6">hover </tspan>
<tspan x="0" y="180" id="hovertext" class="hovertext st4 st1 st6">HOVER TEXT</tspan>
</text>
</g>
<g id="Hover_panels">
<g id="Default_Text" >
<text transform="matrix(1 0 0 1 459.2306 1051.639)">
<tspan x="0" y="0" class="st16 st1 st19">Default Text </tspan>
</text>
<g id="Hidden_Text" class="st22">
<text transform="matrix(1 0 0 1 566.0988 1163.5396)" class="st23 st1 st24">
<tspan>Hidden Text</tspan>
<set attributeName="visibility" to="visible" begin="hovertext.mouseover" end="hovertext.mouseout"/>
</text>
</g>
</g>
</g>
</svg>
我不太了解Illustrator允许你做什么,但至少它没有JavaScript。