简体   繁体   English

如何在悬停时更改屏幕区域的背景色

[英]How to change the background color of a screen area on hover

I am making a website for a school project, wherein I have left and right drawers. 我正在为一个学校项目制作一个网站,其中有左右抽屉。 The drawers are hidden and show only when onclick pageX < 100 (left drawer) and pageX > 1200 (right drawer). 抽屉是隐藏的,仅在onclick pageX < 100 (左抽屉)和pageX > 1200 (右抽屉)时显示。 As the drawers show only onclick() , I want that area to get highlighted in some way (preferably color-change) so that the user knows there is something there. 由于抽屉仅显示onclick() ,因此我希望以某种方式(最好是颜色变化)突出显示该区域,以便用户知道那里有东西。 How do I do this? 我该怎么做呢?

HTML: HTML:

  <div id="pgcontainer"> 
    <header>
      <div id="navbar">
        <div id="rightdrawer">
          <ul>
            <li><a href="#" class="btn btn-danger">Register</a></li>
            <li><a href="archives.html">Archives</a></li>
            <li><a href="contactUs.html">Contact Us</a></li>
            <li><a href="sponsors.html">Our sponsors</a></li>
          </ul>
        </div>
      </div>
    </header>
  </div>

JavaScript: JavaScript:

$(function() {
  var menuwidth  = 240; // pixel value for sliding menu width
  var menuspeed  = 400; // milliseconds for sliding menu animation time

  var $bdy       = $('body');
  var $container = $('#pgcontainer');
  var $hamburger    = $('#hamburgermenu');
  var $rightmenu = $('#rightdrawer');
  var negwidth   = "-"+menuwidth+"px";
  var poswidth   = menuwidth+"px";

  $('#pgcontainer').on('click',function(e) {
    if(e.pageX < 130) {
      if($bdy.hasClass('openmenu')) {
        jsAnimateMenuLeft('close');
      } else {
        jsAnimateMenuLeft('open');
      }
    }
  });

  $('.overlay').on('click', function(e) {
    if($bdy.hasClass('openmenu')) {
      jsAnimateMenuLeft('close');
    }
    else if($bdy.hasClass('openmenur')) {
      jsAnimateMenuRight('close');
    }
  });

  $('a[href$="#"]').on('click', function(e) {
    e.preventDefault();
  });

  function jsAnimateMenuLeft(tog) {
    if(tog == 'open') {
      $bdy.addClass('openmenu');

      $container.animate({marginRight: negwidth, marginLeft: poswidth}, menuspeed);
      $hamburger.animate({width: poswidth}, menuspeed);
      $('.overlay').animate({left: poswidth}, menuspeed);
    }

    if(tog == 'close') {
      $bdy.removeClass('openmenu');

      $container.animate({marginRight: "0", marginLeft: "0"}, menuspeed);
      $hamburger.animate({width: "0"}, menuspeed);
      $('.overlay').animate({left: "0"}, menuspeed);
    }
  }
});

I think that the optimal solution here is to add two more elements, position them fixed and add some nice hover styles. 我认为这里的最佳解决方案是再添加两个元素,将它们固定放置并添加一些不错的悬停样式。

Note that since .leftdrawer-hover and .rightdrawer-hover are children on #pgcontainer clicking on them would act exactly as you need, because click events will bubble to #pgcontainer where you will detect them and show/hide corresponding drawer. 请注意,由于.leftdrawer-hover.rightdrawer-hover#pgcontainer上的子级, #pgcontainer单击它们将完全按照您的需要进行操作,因为click事件将冒泡到#pgcontainer ,您可以在其中检测到它们并显示/隐藏相应的抽屉。

 #pgcontainer .leftdrawer-hover, #pgcontainer .rightdrawer-hover { content: ''; position: fixed; top: 0; bottom: 0; width: 130px; display: block; background: rgba(200, 200, 200, .4); } #pgcontainer .rightdrawer-hover { right: 0; } #pgcontainer .leftdrawer-hover:hover, #pgcontainer .rightdrawer-hover:hover { background: rgba(0, 0, 0, .7); cursor: pointer; } 
 <div id="pgcontainer"> <div class="leftdrawer-hover"></div> <div class="rightdrawer-hover"></div> <!-- other tags --> </div> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM