【问题标题】:CSS Elements Responding to :hover响应 :hover 的 CSS 元素
【发布时间】:2021-09-07 10:26:18
【问题描述】:

我一直在做一个需要帮助的小项目。我是 HTML 和 CSS 的新手,并且一直在练习一些 sn-p。

 <div class="mysection">
    <div class="holdit"><a href=# class="apd"><span></span></a><br />Right</div>
    <div class="holdit"><a href=# class="norm"><span></span></a><br />Left</div>
 </div>

我想这样当 apd 悬停时,apd 和 norm(特别是跨度)都会以相同的大小变化(比如说从 60px 到 50px)。

当 apd 悬停时,我希望 norm 和 apd 都缩小得更小(从 60px 到 30px)。

如果您要在两者之间来回摆动光标,则元素大小将根据悬停的内容进行调整。如果没有悬停,它们将返回到未悬停的大小(60px)。我觉得这应该很简单,但是,尽管我尽了最大的努力,我还是无法让元素按预期工作。这是 CSS:

     a.apd:hover span { background-color:#000; width: 50px; height: 50px;  } 
     .mysection:hover a.norm span { background-color:#000; width: 30px; height: 30px;  }
     a.norm:hover a.apd span { background-color:#000; width: 30px; height: 30px;  }

感谢您的帮助。

【问题讨论】:

    标签: html css hover resize element


    【解决方案1】:

    我想这就是你想要的。在 CSS 中,您可以将 div 悬停以缩放每个元素,但这并不准确,因为如果 div 很大,我可以将鼠标悬停在您的两个元素之外的任何地方,它们会被缩放。检查sn-p。

    使用 JavaScript,您可以控制它们。如果你想改进代码,我建议你为两者创建一个类。

     var apd = document.getElementsByClassName("apd")[0]
                var norm = document.getElementsByClassName("norm")[0]
        
                apd.addEventListener("mouseover", function( event ) {
                    norm.style.width="60px";
                    norm.style.height="60px";
                    apd.style.width="60px";
                    apd.style.height="60px";
                }, false)
                        
                norm.addEventListener("mouseover", function( event ) {
                    norm.style.width="60px";
                    norm.style.height="60px";
                    apd.style.width="60px";
                    apd.style.height="60px";
                }, false)
        
                apd.addEventListener("mouseout", function( event ) {
                    norm.style.width="50px";
                    norm.style.height="50px";
                    apd.style.width="50px";
                    apd.style.height="50px";
                }, false)
        
                norm.addEventListener("mouseout", function( event ) {
                    norm.style.width="50px";
                    norm.style.height="50px";
                    apd.style.width="50px";
                    apd.style.height="50px";
                }, false)
    .mysection{
                    outline: 2px dashed blue;
                }
        
                .mysection a
                {
                    width: 50px;
                    height: 50px;
                    background: red;
                    display: inline-block;
                    outline: 2px dashed green;
                }
    <html lang="en">
        <head>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <title>Test</title>
        </head>
        <body>
            <div class="mysection">
                <div><a href=# class="apd"><span></span></a><br/>Right</div>
                <div><a href=# class="norm"><span></span></a><br/>Left</div>
            </div>  
        </body>
        </html>

    【讨论】:

    • 这正是我想要弄清楚的。谢谢
    【解决方案2】:

    <head>
      <style>
        .mysection:hover .holdit{
        
          background-color:orange;
          padding-left:10%;
        }
         .mysection:hover .holdit{
          background-color:orange;
          
          padding-left:10%;
        }
        .apd{
          background-color:red;
          border-radius:5%;
          width:100%;
        }
        .norm{
          background-color:green;
          border-radius:5%;
          width:100%;
        }
        .mysection{
          background-color:blue;
          width:50%;
        }
        .holdit{
          width:100%;
          border-radius:25px;
        }
      </style>
    </head>
    <body>
    <div style="width:100%;background-color:purple">
      <div class="mysection">
          <div class="holdit"><a href=# class="apd"><span></span><br />Right</a></div>
          <div class="holdit"><a href=# class="norm"><span></span><br />Left</a></div>
       </div>
    </div>
    </body> 

    【讨论】:

      【解决方案3】:

      假设父 div.mysection 内没有其他内容,您想避免悬停,您可以通过将 :hover 状态放在两个元素的父元素上来选择这两个元素。

      .mysection span
      {
        width: 50px;
        height: 50px;
        background: red;
        display: inline-block;
      }
      
      .mysection:hover span
      {
        width: 60px;
        height: 60px;
      }
       <div class="mysection">
          <div class="holdit"><a href=# class="apd"><span></span></a><br />Right</div>
          <div class="holdit"><a href=# class="norm"><span></span></a><br />Left</div>
       </div>

      【讨论】:

        猜你喜欢
        • 2012-09-21
        • 2017-12-07
        • 2021-09-23
        • 2013-01-02
        • 1970-01-01
        • 2021-04-08
        • 1970-01-01
        • 2019-08-28
        • 2014-02-03
        相关资源
        最近更新 更多