帶有半透明效果的遮罩層程式碼例項

antzone發表於2017-04-13

本章節分享一段程式碼例項,它實現了點選按鈕彈出帶有半透明遮罩層的效果。

程式碼例項如下:

[HTML] 純文字檢視 複製程式碼
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style>
* {
  margin:0px;
  padding:0px;
}
.box {
  position: absolute;
  width: 600px;
  left: 50%;
  height: auto;
  z-index: 100;
  background-color: #fff;
  border: 1px #ddd solid;
  padding: 1px;
}
.box h2 {
  height: 25px;
  font-size: 14px;
  background-color: #aaa;
  position: relative;
  padding-left: 10px;
  line-height: 25px;
  color: #fff;
}
.box h2 a {
  position: absolute;
  right: 5px;
  font-size: 12px;
  color: #fff;
}
.box .list {
  padding: 10px;
}
.box .list li {
  height: 24px;
  line-height: 24px;
  list-style:none
}
.box .list li span {
  margin: 0 5px 0 0;
  font-family: "宋體";
  font-size: 12px;
  font-weight: 400;
  color: #ddd;
}
.showbtn {
  font: bold 24px '微軟雅黑';
}
#bg {
  background-color: #000;
  position: absolute;
  z-index: 99;
  left: 0;
  top: 0;
  display: none;
  width: 100%;
  height: 100%;
  opacity: 0.5;
  filter: alpha(opacity=50);
}
</style>
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
<script>
$(function () {
  $(".showbtn").click(function () {
    $("#bg").css({
      display: "block", height: $(document).height()
    });
    var $box = $('.box');
    $box.css({
      //設定彈出層距離左邊的位置
      left: ($("body").width() - $box.width()) / 2 - 2 + "px",
      //設定彈出層距離上面的位置
      top: ($(window).height() - $box.height()) / 2 + $(window).scrollTop() + "px",
      display: "block"
    });
  });
  //點選關閉按鈕的時候,遮罩層關閉
  $(".close").click(function () {
    $("#bg,.box").css("display", "none");
  });
});
</script>
</head>
<body>
<p class="showbtn"><a href="javascript:void(0);">顯示遮罩層</a></p>
<div id="bg"></div>
<div class="box" style="display:none">
  <h2><a href="#" class="close">關閉</a></h2>
  <div class="list">
    <ul>
      <li>螞蟻部落一</li>
      <li>螞蟻部落二</li>
      <li>螞蟻部落三</li>
    </ul>
  </div>
</div>
</body>
</html>

上面的程式碼實現了我們的要求,下面介紹一下它的實現過程。

一.程式碼註釋:

(1).$(function () {}),當文件結構完全載入再去執行函式中的程式碼。

(2).$(".showbtn").click(function () {}),為彈出遮罩層按鈕註冊click事件處理函式。

(3).$("#bg").css({

  display: "block", height: $(document).height()

}),顯示遮罩層。

(4).var $box = $('.box'),獲取彈出層元素物件。

(5).$box.css({

  //設定彈出層距離左邊的位置

  left: ($("body").width() - $box.width()) / 2 - 2 + "px",

  //設定彈出層距離上面的位置

  top: ($(window).height() - $box.height()) / 2 + $(window).scrollTop() + "px",

  display: "block"

});

上面的程式碼設定彈出層在頁面中的位置,也就是left和top屬性值。

left: ($("body").width() - $box.width()) / 2 - 2 + "px"用來設定水平居中,之所以減去二,因為有邊框和外邊距。

top: ($(window).height() - $box.height()) / 2 + $(window).scrollTop() + "px",用來設定彈出層在可取垂直居中。

(6).$(".close").click(function () {

  $("#bg,.box").css("display", "none");

}),點選關閉按鈕可以隱藏彈出層和遮罩層。

二.相關閱讀:

(1).css()方法可以參閱jQuery css()方法一章節。

(2).scrollTop()可以參閱jQuery scrollTop()方法一章節。

相關文章