使用HTML DIV+CSS樣式+JavaScript實現自定義個性化的模態窗口

2020-12-05 一都編程

01第一節:什麼是模態窗口

#JavaScript#什麼是模態窗口,是指當模態窗口彈出來的時候,滑鼠不能單擊這個對話框之外的區域。一般用於給用戶一個提示信息,必須關閉模態窗口之後才可以進行其它的操作。

圖1

圖1就是一個使用DIV+CSS自定義的一個模態窗口,其優點是個性化強,根據系統要求完全自行設計,而系統窗口是無法做到的。

02第二節:CSS 設置

一、 position定位

在CSS樣式中,position屬性主要用來設置元素的定位。position屬性可以設置不同的定位方式,任何元素都可以定位。

絕對定位:是指針對瀏覽器的窗口位置對模態窗口進行定位,固定在一個位置,不會被其它的元素影響。相對定位:是指模態窗口的位置相對於其它元素而進行定位,會受到其它元素的影響。Position屬性的值如下說明:

圖2

元素的定位類型說明如下:

static:又稱為靜態定位,它是position屬性的默認值,屬於正常定位,也就是對於top/bottom/left/right的設置無效。absolute:又稱為絕對定位,它是基於父級別的元素進行定位的,但是該值有兩種特殊的情況:A:如果父元素沒有使用position屬性,則子元素使用position=「absolute」,子元素的top/left/right/bottom的值是相對於瀏覽器定位的。

下面我們將父元素和子元素在頁面上呈現一下,可清楚的認識它們:

圖3

B:如果父元素使用了position屬性,則子元素使用了position=「absolute」, 子元素的top/left/right/bottom的值是相對於父元素定位的。

只要父元素使用了position屬性,則子元素就是相對於父元素定位的。

圖4

fixed:不管父元素是否使用了position屬性,則子元素使用position=「fixed」都是相對於瀏覽器進行定位的。relative:在什麼情況下都是相對於父元素進行定位的。如果要使一個DIV相對於整個瀏覽器定位,並且是全屏顯示,帶背景色,則可以設置如下CSS樣式:

<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><title></title><style type="text/css">body{margin:0px; padding:0px;}.alertBox{position:fixed;width:100%;height:100%;background-color:#808080;}</style></head><body><div></div></body></html>

運行一下具有背景色的頁面:

圖5

二、opacity透明

opacity屬性是CSS 3版本新增加的屬性,用於設置HTML元素的透明度,1表示不透明,0表示完全透明。透明度的設置在0-1之間。例如 opacity=0.5,半透明。

例如:現在給一個div元素設置透明度為30%

<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><title></title></head><body><div style="width:400px; height:200px; background-color:#808080;">不透明</div><div style="width:400px; height:200px; background-color:#808080;opacity:0.3">透明30%</div></body></html>

運行一下這個設置了頁面透明度的頁面:

圖6

三、 z-index堆疊

z-index 屬性設置元素的堆疊順序。擁有更高堆疊順序的元素總是會處於堆疊順序較低的元素的前面。

下面的Html代碼設置一下z-index屬性:

<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><title></title></head><body><div style="background-color:#808080;width:400px; height:400px;"><div style="background-color:#ff0000;width:100px; height:100px;position:fixed"></div></div></body></html>

運行一下具有z-index的頁面結果:

圖7

03第三節:DIV+CSS設置提示窗口

一、整體效果

通過上面對CSS三個屬性的設置,則可以通過DIV+CSS設置模態提示窗口,效果如下:

圖8

當點擊「保存」或「提交」按鈕之後,如果頁面上的信息沒有通過驗證,則會給出提示信息,之前我們直接使用window.alert()來提示,但通過上面的DIV+CSS模態提示窗口,更能提升用戶的體驗。

二、 CSS樣式

使用CSS設置模態窗口的完整代碼:

<style type="text/css">body {margin: 0px;padding: 0px;}/*遮罩層,帶透明度*/.alertBox {position: fixed;width: 100%;height: 100%;background-color: #808080;opacity: 0.3;z-index: 1000;display: block;}/*模態提示框*/.msgBox {background-color: #fff;z-index: 1001;position: absolute;margin: 0 auto;top: 50%;left: 50%;margin-top: -100px;margin-left: -200px;width: 400px;height: 200px;cursor: pointer;display: block;}.msgBox .title {background-color: #0094ff;color: #fff;height: 35px;line-height: 35px;text-align: right;padding-right: 5px;}.msgBox .msgBody {padding-left: 20px;margin-top: 50px;}.msgBox .msgButton{text-align:center;margin-top:20px;}.btn {background-color: #0094ff;color: #fff;width: 80px;height: 30px;border: 0px;}</style>

三、 HTML代碼

將模態窗口的CSS樣式應用在Html代碼中:

<body><div></div><div><div><div>關閉</div></div><div><span id="message"></span></div><div><input id="Button1" type="button" value="確定" /></div></div></body>

運行一下使用html+css設置的模態窗口,其最終的樣子如下圖所示:

圖9

四、 JavaScript代碼

使用JavaScript代碼來控制DIV+CSS模態窗口的顯示和隱藏。

<script type="text/javascript">function show(msg) {var alertBox = document.getElementById("alertBox");alertBox.style.display = "block";var msgBox = document.getElementById("msgBox");msgBox.style.display = "block";msgBox.style.top = "20%";var msgX = document.getElementById("message");msgX.innerText = msg;}function hideWindow() {var alertBox = document.getElementById("alertBox");alertBox.style.display = "none";var msgBox = document.getElementById("msgBox");msgBox.style.display = "none";}</script>

04第四節、完整的DIV+CSS+JS代碼

<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title></title><style type="text/css">body {margin: 0px;padding: 0px;}/*遮罩層,帶透明度*/.alertBox {position: fixed;width: 100%;height: 100%;background-color: #808080;opacity: 0.3;z-index: 1000;display: none;}/*模態提示框*/.msgBox {background-color: #fff;z-index: 1001;position: absolute;margin: 0 auto;top: 50%;left: 50%;margin-top: -100px;margin-left: -200px;width: 400px;height: 200px;cursor: pointer;display: none;}.msgBox .title {background-color: #0094ff;color: #fff;height: 35px;line-height: 35px;text-align: right;padding-right: 5px;}.msgBox .msgBody {padding-left: 20px;margin-top: 50px;}.msgBox .msgButton {text-align: center;margin-top: 20px;}.btn {background-color: #0094ff;color: #fff;width: 80px;height: 30px;border: 0px;}</style><script type="text/javascript">function show(msg) {var alertBox = document.getElementById("alertBox");alertBox.style.display = "block";var msgBox = document.getElementById("msgBox");msgBox.style.display = "block";msgBox.style.top = "20%";var msgX = document.getElementById("message");msgX.innerText = msg;}function hideWindow() {var alertBox = document.getElementById("alertBox");alertBox.style.display = "none";var msgBox = document.getElementById("msgBox");msgBox.style.display = "none";}</script></head><body><div id="alertBox"></div><div id="msgBox"><div><div onclick="hideWindow()">關閉</div></div><div><span id="message"></span></div><div><input id="Button1" type="button" onclick="hideWindow()" value="確定" /></div></div><input type="button" onclick="show('信息填寫不完整,請按要求填寫!')" value="保存" /></body></html>

將上面的代碼保存到*.html文件中,然後運行一下效果:

圖10

在圖10中點擊「保存」按鈕,就會彈出模態窗口。

圖11

在圖11中,一個完整的,顯示在瀏覽器窗口中間的模態窗口就出現了。

在這裡,我們將DIV+CSS設計的一個完整的模態窗口給開發出來了,使用模態窗口可以讓系統的提示信息更加美觀,且完整自定義和個性化,給用戶一個非常棒的用戶體驗。

相關焦點

  • HTML5+CSS+JS時間
    前端的作用就是為用戶創建一個可視化的窗口,並附帶一些功能.因為需要首先我們博客都是在遊覽器中打開,當你通過域名使用遊覽器訪問別人的博客首頁的時候,比如CSDN,內部操作就是 這個CSDN的域名指向其伺服器的外網IP位址,通過地址我們訪問了一個index.html文件,然後就是我們所看到的東西了,比如標題,推送,頁面特效之類的,這些使用css以及javaScript(簡稱JS)來實現,就像一輛車,車外框就是
  • HTML的DIV布局的實際問題詳解,精通。DIV浮動布局,塌陷
    各位讀者大家好,我是自學代碼的小張,在這裡與大家分享自學經驗和一些建議,專攻html,div+css,javascript,jquery,ajax,java,php,還有一其它的一些前端框架。小張也是自學,有不足的地方還望大家不吝賜教~~感謝支持!
  • Meta CSS框架發布
    a{/* 很多樣式定義 */}.b{/* 很多樣式定義 */ text-align:center;}.c{/* 很多樣式定義 */ text-align:right;}<div class="a">按鈕A</div><div class="b">按鈕B</div><div class
  • 什麼是css,css選擇器簡介
    什麼是CSScss是 Cascading(層疊 )Style(樣式) Sheet(表)的簡稱,及層疊樣式表,CSS技術用來美化html頁面,html相當於蓋房子,CSS相當於裝修,使用CSS可以把樣式代碼和html分離
  • div+css定位技術之相對定位和絕對定位
    doctype html><htmllang="en"><head><metacharset="UTF-8"><metaname="Generator"content="EditPlus"><metaname="Author"content
  • HTML+CSS:css定位詳解之相對定位、絕對定位和固定定位
    本篇文章我們主要給大家說一下css的定位。css的定位是我們以後網頁製作中比較常用的屬性,也是很重要的知識點。了解各個定位的作用以及層級關係對以後的頁面布局至關重要。css定位主要有四種,靜態定位、相對定位、絕對定位和固定定位。其中靜態定位這個是元素的默認定位方式,不能使用top,bottom,left,right和z-index屬性,其它三種定位可以使用以上幾個屬性。我們這裡主要介紹後邊的這三個定位。
  • 全面掌握CSS基本知識點
    important > 行內樣式 > ID選擇器 > 類選擇器 > 標籤 > 通配符 > 繼承 > 瀏覽器默認屬性 複製代碼css選擇器的權重計算規則第一等:代表內聯樣式,如:style = '' ,權值為1000第二等:代表ID選擇器,如:#content ,權值為0100第三等:代表類、偽類、屬性選擇器,如:.content 權值0010
  • JS+jQuery+qrcode.js實現前端生成二維碼
    實現過程是頁面打開時默認展示一個二維碼,用戶可以更改文本內容,更改生成二維碼的參數,例如尺寸、前景色、背景色等,點擊【生成二維碼】按鈕即可在下方生成一個二維碼,用手機微信或者QQ、百度等都可以識別輸入的內容,當輸入網址時還可以直接跳轉到網站頁面。下圖為效果樣式。
  • 輕輕鬆鬆學CSS:position
    沒有家長的管教,他無組織、無紀律,是典型的獨行俠,因此學習他就相對簡單(「相對簡單」是指在html、css中牽扯因素少),先學簡單的符合讀者的認知規律。現在,讀者對fixed還沒有一個具體的感知,先舉個簡單的例子-浮動廣告,代碼如下:1<!
  • HTML實戰篇:html仿百度新聞版塊製作
    本篇文章主要給大家介紹一下使用html+css來模仿製作百度新聞的版塊。我們來分析一下下邊的這張百度新聞圖片,來簡單的思考下我們要如何製作這個頁面。1)製作頁面所需知識點1、左浮動(float) 我們需要讓下方的三個子元素進行左浮動來讓元素左邊對齊;2、列表標籤(ul li標籤)的使用,使用ul和li來完成列表的製作,這裡注意第一模塊左邊有個小方塊圖標,我們可以使用一個span標籤來製作即可。
  • CSS常考知識點
    important的弊端,那我們什麼時候可以使用!important呢?(發散題)這個題目是個發散題,一般人很難答得全,其實有兩種情況我們可以使用 !important:一種情況是你的網站上有一個設定了全站樣式的CSS文件,同時你(或是你同事)寫了一些很差的內聯樣式。
  • Axure實現Material Design的按鈕波浪特效
    本文將以實現谷歌材料設計按鈕的波浪特效為例,提供一種新的自定義Axure元件樣式的方法。需要說明的是:本文所提供的方法已經最大程度小白化,簡單易用,但是對於產品經理來說,本文的教程可能不具有實際的意義,僅提供給喜歡研究Axure Or Code的玩家。
  • CSS之定位一(position屬性)
    圖1:relative子元素位置變化圖1中外框和除position屬性值不一樣外,其他css屬性均一致,其內外框html和相同部分css見圖2。圖3:absolute子元素位置變化圖3中外框和除position屬性值不一樣外,其他css屬性均一致。其內外框html和相同部分css見圖4。
  • 常見的CSS文字居中顯示
    <div> <span>測試文字</span></div>css.box{html<div> <span>測試文字測試文字測試文字測試文字</span></div>css
  • 第八篇:jQuery的使用及元素選擇器
    Type屬性是腳本文件類型,一般是javascript類型。'#box');//執行功能方法$('#box').css('color','red');案例1:使用jQuery庫的網頁代碼<html><head><title>JavaScript開發案例</title><meta http-equiv="Content-Type" content="text/html; charset
  • 解讀html的表格元素-60天挑戰計劃(第四天)
    html的table元素的定義是表示通過二維數據表展示的信息,在CSS創建之前,html的table元素常用於頁面的布局,但是這種用法在html4之後就被拋棄了,並且根據table元素的語義,也不應該被用於html頁面布局,更多的是使用css中的類似"display: table; "樣式進行適當的應用。
  • 如何用純css打造類materialUI的按鈕點擊動畫並封裝成react組件
    ,上面的css動畫的實現可以藉助cubic-bezier這個在線工具,他可以生成各種不同形式的貝塞爾曲線.工具長這樣:2.基於react和css3的button組件具體實現首先,我們的組件是採用react實現, 技術點我會採用比較流行的umi腳手架, classnames庫以及css Module, 代碼很簡單, 我們來看看吧.import classnames from 'classnames'import styles from '.
  • Html基礎:簡介、結構、標籤
    web標準    1:w3c 全球資訊網聯盟組織     用來制定web標準的機構(組織)    2:web標準:製作網頁要遵循的規範    3:web標準規範的分類:  結構標準   表現標準   行為標準    4:結構: html     表現: css     行為:javascript瀏覽器介紹
  • 用css配合HTML代碼製作導航條下拉麵板
    下面我們先來製作一個簡單的導航:css代碼片段<style type="text/css">*{ margin:0; padding:0; border代碼片段<div><ul ><li><a href="http://www.shjypsj.com/">首頁</a></li><li><a href="http://www.shjypsj.com/html/company/conpany-introduction.html">關於建冶</a>