หน้าต่างป๊อปอัปและโมดอลโดยใช้องค์ประกอบ "โต้ตอบ" HTML5 การสร้างกล่องโต้ตอบโมดอล การจัดการกล่องโต้ตอบด้วย JavaScript

กระบวนการหลายอย่างบนเว็บในปัจจุบันต้องได้รับความยินยอมจากผู้ใช้จึงจะเสร็จสมบูรณ์ ตัวอย่างเช่น ผู้ใช้อาจต้องลบบัญชี เปลี่ยนชื่อ หรือยืนยันการทำธุรกรรมทางการเงิน

วิธีการทั่วไปในกรณีเช่นนี้คือการแสดงกล่องโต้ตอบ ซึ่งโดยปกติจะมีสองปุ่ม อันหนึ่งสำหรับการยกเลิก อีกอันสำหรับดำเนินการ เราทำสิ่งนี้มาหลายปีแล้ว แต่ในบทช่วยสอนนี้ เราจะทำแบบเนทีฟโดยใช้แท็กทดลอง

.

การใช้องค์ประกอบโต้ตอบ

ปรากฏใน HTML5 (5.1 ให้แม่นยำ) มันถูกจัดประเภทเป็นองค์ประกอบ "ส่วนราก" เช่นเดียวกับองค์ประกอบ ,
และแต่ละอันจะติดตั้งอันใหม่ บล็อกอิสระมีเนื้อหา คุณสามารถวางมันเป็นองค์ประกอบลูกของร่างกายหรือใช้บางอย่างเช่น
หรือ
- ทั้งสองแนวทางนี้ถูกต้อง



เบราว์เซอร์ที่รองรับ (Chrome 37+ และ Opera 27+) จะแสดงองค์ประกอบตามค่าเริ่มต้น

ซ่อนไว้ ทำให้มองเห็นได้เมื่อเรียก show() หรือ showModal() และปิด() เพื่อซ่อนอีกครั้ง โดยทั่วไป เราจะเรียกใช้เมธอดนี้เมื่อเหตุการณ์การคลิกเริ่มทำงาน เช่นนี้

Var $accountDelete = $("#delete-account"), $accountDeleteDialog = $("#confirm-delete");

$accountDelete.on("คลิก", ​​function() ( $accountDeleteDialog.showModal(); ));

$("#cancel").on("คลิก", ​​function() ( $accountDeleteDialog.close(); ));

ความแตกต่างระหว่างเมธอด show() และ showModal()

เป็นที่น่าสังเกตว่าเมธอด show() และ showModal() มีพฤติกรรมแตกต่างกัน show() วิธีการเปิดกล่องโต้ตอบตามตำแหน่งภายใน DOM ถ้าจะเพิ่มเมื่อก่อน.จะปรากฏที่ด้านล่างของหน้า เราจะต้องเพิ่มสไตล์ที่กำหนดเอง เช่น เพื่อวางตำแหน่งกล่องโต้ตอบไว้ที่กึ่งกลางของหน้า โดยทั่วไปแล้วสไตล์เหล่านี้จะใช้เพื่อทำให้องค์ประกอบดูสูงกว่าสไตล์อื่นๆ

ทรัพย์สินตำแหน่ง โดยสมบูรณ์พร้อมกับด้านซ้ายและด้านบนในทางกลับกัน เมธอด showModal() จะแสดงองค์ประกอบเป็น หน้าต่างกิริยาช่วย- โดยจะแสดงไว้ตรงกลางหน้า โดยวางไว้ที่ชั้นบนสุด เช่นเดียวกับใน API แบบเต็มหน้าจอ ซึ่งป้องกันการทับซ้อนโดยใช้ดัชนี z

ตำแหน่งสัมพัทธ์

(ตำแหน่งสัมพัทธ์) และล้นไปยังองค์ประกอบหลัก

กล่องโต้ตอบจะใช้สไตล์เบราว์เซอร์ตามค่าเริ่มต้น แต่สามารถแทนที่สไตล์เหล่านี้ได้ เช่นเดียวกับองค์ประกอบส่วนใหญ่ ตัวอย่างเช่น คุณสามารถทำให้เส้นขอบของกล่องโต้ตอบบางลง ปัดมุม และเพิ่มเงาได้

อีกทั้งเมื่อมีธาตุ

แสดงโดยเมธอด showModal() เรามีองค์ประกอบหลอกเพิ่มเติม::ฉากหลังให้เลือกใช้ องค์ประกอบหลอกนี้จะอยู่ใต้กล่องโต้ตอบโดยตรง ซึ่งครอบคลุมวิวพอร์ตทั้งหมด

มันถูกใช้เป็นพื้นหลังสีเข้มโปร่งใส - คลิกที่ปุ่มสีแดงเพื่อดูการทำงาน:

เพิ่มความสง่างามด้วยการเปลี่ยนผ่าน

การปรับแต่งสไตล์กล่องโต้ตอบควรจะเป็นเรื่องง่าย แต่จะเป็นอย่างไร เพิ่ม CSSการเปลี่ยนแปลง? แล้วการเปิดหน้าต่างอย่างราบรื่นโดยใช้เอฟเฟกต์การซูมเหมือนกับที่ OS X ทำล่ะ

ขั้นตอนที่ 1

ในการเริ่มต้น เราจะปรับขนาดกล่องโต้ตอบลง 90% ใช้การเปลี่ยนภาพ และซ่อนหน้าต่างให้พ้นสายตา

กล่องโต้ตอบ ( การมองเห็น: ซ่อนอยู่; การแปลง: ขนาด (0.1); การเปลี่ยนแปลง: การแปลง 200ms; )

ขั้นตอนที่ 2

ตอนนี้เรากำหนดคลาสที่จะปรับขนาดกล่องโต้ตอบ ขนาดจริงและทำให้มันมองเห็นได้

Dialog.dialog-scale ( การมองเห็น: มองเห็นได้; แปลง: ขนาด (1); )

ขั้นตอนที่ 3

เคล็ดลับของเราคือการ "หน่วงเวลา" กล่องโต้ตอบขนาดเล็กสักสองสามมิลลิวินาทีก่อนที่จะเพิ่มคลาสกล่องโต้ตอบขนาด เพื่อให้บรรลุเป้าหมายนี้ เราจึงเพิ่มคลาสโดยใช้เมธอด js setTimeout():

การเปลี่ยนแปลงแบบ Var; $accountDelete.on("คลิก", ​​function() ( $accountDeleteDialog.showModal(); transition = setTimeout(function() ( $accountDeleteDialog.addClass("dialog-scale"); ), 0.5); ));

ขั้นตอนที่ 4

อย่าลืมลบคลาสนี้และล้างการหมดเวลาเมื่อปิดกล่องโต้ตอบ

$("#cancel").on("คลิก", ​​function() ( $accountDeleteDialog.close(); $accountDeleteDialog.removeClass("dialog-scale"); clearTimeout(การเปลี่ยนแปลง); ));

นั่นคือทั้งหมด! ผลลัพธ์สามารถเห็นได้ในการสาธิตต่อไปนี้:

เพื่อสรุปมันขึ้นมา

สะดวกมาก แต่ก็ยังมีการรองรับเบราว์เซอร์ที่แย่มาก หากและเมื่อเบราว์เซอร์หลักทั้งหมดใช้การสนับสนุน เราจะพึ่งพาไลบรารีน้อยลง เนื้อหาจะมีความหมายมากขึ้น และเราจะมี วิธีการมาตรฐานเพื่อแสดงกล่องโต้ตอบโมดอล

http://caniuse.com/#feat=dialog

ในระหว่างนี้ คุณสามารถใช้ polyfil ของ Google Chrome เพื่อจำลองพฤติกรรมนี้ในเบราว์เซอร์ที่ยังไม่รองรับ

องค์ประกอบ HTML5 ใหม่และ JavaScript API ใหม่ช่วยให้เราสามารถสร้างได้ แอปพลิเคชันที่ซับซ้อนสำหรับเบราว์เซอร์ ส่วนใดส่วนหนึ่ง แอปพลิเคชั่นที่ทันสมัยแตกต่างกัน กล่องโต้ตอบ- พวกเขาแจ้งให้ผู้ใช้ยืนยันการกระทำบางอย่างหรือเพียงแค่แสดงข้อความ ด้วยองค์ประกอบใหม่ "

" ตอนนี้เราสามารถสร้างหน้าต่างเหล่านี้โดยใช้ HTML5 ล้วนๆ ได้

มาร์กอัปธรรมดาที่ไม่มีสไตล์

องค์ประกอบ<บทสนทนา> สามารถวางไว้ที่ใดก็ได้ภายในแท็ก body บนหน้า HTML ไม่แนะนำให้วางไว้ในย่อหน้าข้อความ -

เนื่องจากอาจทำให้เกิดปัญหาในการแสดงผลได้ สิ่งนี้น่าจะเกิดขึ้นกับองค์ประกอบต่างๆ<บทสนทนา>ซึ่งประกอบด้วย องค์ประกอบเพิ่มเติมและไม่ใช่แค่ข้อความเท่านั้น คำจำกัดความของคุณสมบัติ " เปิด" จะแสดงกล่องโต้ตอบเมื่อเปิดเพจ หากไม่มีคุณสมบัตินี้ หน้าต่างจะปิดตามรูปแบบเดิม

> กรุณาอ่านของเรา > ข้อกำหนดในการให้บริการ > .>


เงื่อนไขการให้บริการ...
>
> >

ในตัวอย่างของเรา เราได้กำหนดกล่องโต้ตอบระหว่างสองย่อหน้า ตำแหน่งขององค์ประกอบนี้ช่วยให้มั่นใจได้ว่าจะแสดงในแนวนอนและตรงกลาง โดยไม่คำนึงถึงความลื่นไหลขององค์ประกอบอื่นๆ ในแนวตั้ง ระบบจะคำนวณตำแหน่งโดยสัมพันธ์กับขอบด้านบนของหน้าต่างเบราว์เซอร์ หากคุณพอใจกับสิ่งนี้แล้ว ใช้ CSSไม่จำเป็น.

หากมุมมองมาตรฐานไม่เหมาะกับคุณ ให้เพิ่มมุมมองของคุณเอง สไตล์ของตัวเองและปรับแต่งตามที่คุณต้องการ คุณสามารถใช้อะไรก็ได้ คุณสมบัติซีเอสเอสวิธีปรับแต่งองค์ประกอบบล็อก - ใช้บ่อยที่สุด "ขอบ-รัศมี"และ "เงา"เพื่อเอฟเฟกต์เพิ่มเติม

การจัดการกล่องโต้ตอบด้วย JavaScript

เพื่อเปิดและปิดองค์ประกอบ<บทสนทนา>การใช้งาน วิธีการจาวาสคริปต์ แสดง()และ ปิด().

document.getElementsByTagName ("span" ) [ 0 ] .addEventListener ( "คลิก" , ฟังก์ชัน () (
document.getElementsByTagName("โต้ตอบ")[0].show();
) , เท็จ ) ;

Document.getElementsByTagName ("dialog" ) [ 0 ] .addEventListener ( "คลิก" , ฟังก์ชัน () (
นี้.ปิด();
) , เท็จ ) ;

ในตัวอย่างของเรา เรากำหนดเหตุการณ์สองเหตุการณ์ เหตุการณ์แรกทำให้องค์ประกอบกล่องโต้ตอบเปิดขึ้นเมื่อมีการคลิกองค์ประกอบแรก - การคลิกที่กล่องโต้ตอบที่เปิดอยู่จะเป็นการปิด

แบบฟอร์มภายในองค์ประกอบกล่องโต้ตอบ

องค์ประกอบ<บทสนทนา> สามารถมีได้ไม่เพียงแต่ข้อความธรรมดา แต่ยังมีองค์ประกอบเพิ่มเติมอีกด้วย สิ่งนี้ช่วยให้เราสามารถวางแบบฟอร์มภายในกล่องโต้ตอบได้ โปรดทราบว่าแทน วิธีการทั่วไป "โพสต์"และ "รับ"คุณจะต้องใช้วิธีพิเศษ" โต้ตอบ"เพื่อประมวลผลเนื้อหาของแบบฟอร์ม

>
> เงื่อนไขการให้บริการของเรา... >


var โต้ตอบ = document.querySelector("โต้ตอบ"); document.querySelector("#show").onclick = function() ( Dialog.show(); ); document.querySelector("#close").onclick = function() ( Dialog.close(); );

หน้าต่างสนทนา!

ปิดกล่องโต้ตอบเปิด!

สไตล์การโต้ตอบ

คุณสามารถเพิ่มสไตล์ที่กำหนดเองให้กับองค์ประกอบกล่องโต้ตอบได้ในลักษณะเดียวกับองค์ประกอบบล็อกอื่น ๆ เช่น nav, div, ส่วนท้าย ฯลฯ

กล่องโต้ตอบ ( เส้นขอบ: 1px solid rgba (0, 0, 0, 0.3); border-radius: 6px; box-shadow: 0 3px 7px rgba (0, 0, 0, 0.3); )

การกำหนดสไตล์องค์ประกอบกล่องโต้ตอบนั้นง่ายพอๆ กับการกำหนดสไตล์ div!

ปิดกล่องโต้ตอบเปิดสไตล์

Function.showModal() API หากต้องการสร้างโมดอลกล่องโต้ตอบ คุณต้องเรียกใช้ฟังก์ชัน .showModal() แทน .show() โปรดทราบว่าคุณไม่สามารถเลือกข้อความได้พื้นหลัง

หรือคลิกปุ่มเพื่อเลือกปุ่มในกล่องโต้ตอบที่เปิดอยู่

Document.querySelector("#show").onclick = function() ( Dialog.showModal(); );

เลเยอร์นี้อยู่ด้านบนของหน้าต่างองค์ประกอบอื่นๆ โดยไม่คำนึงถึงค่าดัชนี z รวมถึงกล่องโต้ตอบโมดอลที่เปิดไว้ก่อนหน้านี้

หากจำเป็น คุณสามารถปิดกล่องโต้ตอบโมดอลได้โดยใช้ปุ่ม "escape"!

ปิด

เพิ่มพื้นหลังให้กับกล่องโต้ตอบ

หากต้องการเติมสีให้กับพื้นหลัง คุณสามารถใช้องค์ประกอบหลอก::ฉากหลังได้

กล่องโต้ตอบ :: ฉากหลัง ( ตำแหน่ง: คงที่; บน: 0; ซ้าย: 0; ขวา: 0; ล่าง: 0; สีพื้นหลัง: rgba (0, 0, 0, 0.8); )

พื้นหลังสลัวโดยใช้ ::backdrop มันไฮไลต์กล่องโต้ตอบในขณะที่ซ่อนส่วนที่เหลือ!

ปิดกล่องโต้ตอบเปิดที่มีพื้นหลัง

ส่งกลับค่าจากกล่องโต้ตอบ คุณสามารถส่งผ่านข้อโต้แย้งไปที่ .close() กล่องโต้ตอบกลับมาตั้งค่า

คุณสมบัติ returnValue

ส่ง

document.querySelector("#close").onclick = function() ( var value = document.querySelector("#return_value").value; dial.close(value); ); document.querySelector("dialog").addEventListener("ปิด", function() ( alert(this.returnValue); ))

ป้อนข้อความ

ส่งบทสนทนาแบบเปิด

ประโยชน์ขององค์ประกอบ แน่นอนคุณสามารถใช้ไลบรารี jQuery หรือ JavaScript อื่น ๆ เพื่อให้ได้ผลลัพธ์นี้ แต่บทสนทนาก็คือองค์ประกอบ HTML

องค์ประกอบ

และคุณไม่จำเป็นต้องเชื่อมต่อไลบรารีของบุคคลที่สามเพื่อสร้างกล่องโต้ตอบป๊อปอัป ยังดีสำหรับการเข้าถึงอีกด้วย เบราว์เซอร์เข้าใจว่าองค์ประกอบนั้น

นอกจากนี้ กล่องโต้ตอบโมดอลจะถูกจัดวางอย่างเป็นระเบียบในสแต็ก "ชั้นบนสุด" และอยู่ด้านบนขององค์ประกอบอื่นๆ โดยไม่คำนึงถึงคุณสมบัติดัชนี z การใช้ดัชนี z ทำให้การวางกล่องโต้ตอบโมดอลไว้ด้านบนของหน้าเว็บเป็นเรื่องยาก

ตำแหน่ง

บทสนทนามีลักษณะการวางตำแหน่งพิเศษบางประการ ตามค่าเริ่มต้น เมื่อคุณเรียก Dialog.show() กล่องโต้ตอบจะอยู่ตรงกลางวิวพอร์ต แน่นอนคุณสามารถเปลี่ยนแปลงได้โดยใช้การวางตำแหน่ง CSS ปกติ เช่น top: 15px

และคุณก็จำเป็นต้องรู้ด้วย ตำแหน่งที่แน่นอนกล่องโต้ตอบ เฉพาะสำหรับบล็อกที่มีคอนเทนเนอร์เริ่มต้นเท่านั้น ดังนั้น กล่องโต้ตอบที่มีตำแหน่งสัมบูรณ์จะไม่เข้าใจสิ่งต่างๆ เช่น ตำแหน่ง โอเวอร์โฟลว์ และเปอร์เซ็นต์

ข้อมูลจำเพาะประกอบด้วยจุดยึดตำแหน่งที่ช่วยให้คุณสามารถยึดกล่องโต้ตอบกับองค์ประกอบอื่นได้ อย่างไรก็ตาม การดำเนินการนี้ยังไม่ได้นำมาใช้ใน Chrome

เปิดหน้าต่างโต้ตอบหลายหน้าต่าง

หากกล่องโต้ตอบไม่ใช่โมดอล กล่องโต้ตอบเหล่านั้นจะทำงานเหมือนหลายองค์ประกอบ

- สำหรับกิริยา เบราว์เซอร์ผลักกล่องโต้ตอบลงบนสแต็ก ด้านบนของสแต็กคือกล่องโต้ตอบโมดอลที่ใช้งานอยู่ซึ่งจะบล็อกหน้าที่เหลือของเอกสาร เมื่อใดก็ตามที่เปิดกล่องโต้ตอบโมดอล กล่องโต้ตอบนั้นจะถูกผลักไปที่ด้านบนของสแต็ก เมื่อใดก็ตามที่ปิดกล่องโต้ตอบโมดอล กล่องโต้ตอบนั้นจะถูกลบออกจากสแต็ก กล่องโต้ตอบจะแสดงตามลำดับสแต็ก ดังนั้นกล่องโต้ตอบที่ใช้งานอยู่จึงสูงที่สุด

หลังจากโฆษณาป๊อปอัปจำนวนมากบนเว็บไซต์ต่าง ๆ ทัศนคติต่อกล่องโต้ตอบต่าง ๆ ค่อนข้างเป็นลบ อย่างไรก็ตามทุกอย่างขึ้นอยู่กับวัตถุประสงค์ที่ใช้อย่างแน่นอน บางครั้งการใช้งานก็จำเป็นและทำให้ประสบการณ์ผู้ใช้ง่ายขึ้นอย่างมาก

ก่อนหน้านี้ เพื่อสร้างกล่องโต้ตอบที่คุณต้องเชื่อมต่อ ปลั๊กอิน jQueryเช่น Pop Easy, Twitter Bootstrap Modal หรือ jQuery UI Dialog อย่างไรก็ตาม HTML 5 ซึ่งขณะนี้มีความสามารถเพิ่มขึ้นอย่างมาก ช่วยให้คุณสามารถหลีกเลี่ยงการใช้มันได้โดยใช้องค์ประกอบในตัวที่เรียกว่า

.

ย้อนกลับไปก่อนหน้านี้ในปี 2009 องค์ประกอบนี้ถูกรวมไว้ใน HTML 5 แล้ว แต่ถูกแยกออกจากมัน ตอนนี้เขากลับมาอีกครั้งในรูปแบบใหม่

การสนับสนุนองค์ประกอบ เบราว์เซอร์

น่าเสียดายที่เมื่อ ในขณะนี้การสนับสนุนมีจำกัดมาก ใช้ได้เฉพาะใน Safari 6.0 และ Chrome Canary เท่านั้น อย่างไรก็ตาม ใน Chrome Canary คุณต้องเปิดใช้งานในการตั้งค่าก่อน ในการดำเนินการนี้ ให้ไปที่ chrome://flags และเปิดใช้งาน “เปิดใช้งานคุณสมบัติแพลตฟอร์มเว็บทดลอง”.

การโต้ตอบกับ HTMLDialogElement

วิธีการ:

HTMLDialogElement มี วิธีการดังต่อไปนี้ช่วยให้คุณสามารถทำงานกับกล่องโต้ตอบได้

  • show() : วิธีการนี้ใช้เพื่อเปิดกล่องโต้ตอบ ความแตกต่างระหว่างวิธีนี้กับวิธีถัดไปคือแม้จะมีหน้าต่างโต้ตอบเปิดอยู่ แต่ผู้ใช้ยังคงมีโอกาสใช้เพจ - พวกเขาสามารถเลื่อนคัดลอกบางอย่างติดตามลิงก์โดยไม่ต้องโหลดหน้าซ้ำ ฯลฯ
  • showModal() : ใน ในกรณีนี้ผู้ใช้สามารถเข้าถึง "หน้าต่างโมดอล" ที่เปิดอยู่เท่านั้น
  • ปิด() : วิธีการนี้ปิดกล่องโต้ตอบ เมื่อมองไปข้างหน้าเล็กน้อย ฉันจะบอกว่าคุณสามารถส่งพารามิเตอร์ returnValue เข้าไปได้

คุณสมบัติ:

HTMLDialogElement มีคุณลักษณะสองประการต่อไปนี้

  • returnValue: ส่งกลับพารามิเตอร์ที่ถูกส่งไปที่ close() - ไม่จำเป็นต้องระบุ แต่เป็นทางเลือก
  • open: เป็นชนิดข้อมูลบูลีน ซึ่งหมายความว่าสามารถรับได้เพียงสองค่าเท่านั้น - จริง ซึ่งในกรณีนี้กล่องโต้ตอบจะแสดงให้ผู้ใช้เห็น หรือเท็จ จากนั้นจะถูกซ่อนไว้

กิจกรรม:

ฟังก์ชั่นที่ถูกเรียกเมื่อปิด onk มีลักษณะดังนี้:

Dialog.addEventListener("close", function() ( ที่นี่คุณสามารถเขียนโค้ดที่จะดำเนินการได้หากหน้าต่างถูกปิด ));

นอกเหนือจากวิธีการและคุณลักษณะที่กล่าวมาข้างต้นแล้ว

ยังรองรับ:

  • form : ใช้เพื่อรวมแบบฟอร์มเข้ากับ - ด้วยการผูกข้อมูลนี้ มันจึงใช้งานได้เฉพาะในกล่องโต้ตอบเท่านั้น
  • แอตทริบิวต์ออโต้โฟกัส: จำเป็นต้องมุ่งเน้นไปที่อินพุตภายในกล่องโต้ตอบ
  • ยกเลิกเหตุการณ์: เหตุการณ์นี้จะถูกเรียกหลังจากปิดหน้าต่างผ่านคีย์ “เอสซี”

ตอนนี้คุณได้เรียนรู้พื้นฐานแล้ว

คุณสามารถดูตัวอย่างการใช้งานได้จริง

ไวยากรณ์สำหรับการสร้างกล่องโต้ตอบ

ขอบคุณ Hevix สำหรับบทเรียนที่ยอดเยี่ยม;)

รหัสมีความชัดเจนและเรียบง่ายมากจนฉันคิดว่าไม่จำเป็นต้องมีคำอธิบาย สิ่งที่คุณต้องเข้าใจคือเนื้อหาของป๊อปอัปนั้นอยู่ภายในแท็ก

และการเรียกต้องอยู่นอกแท็กนี้

เพื่อแสดงเนื้อหาขององค์ประกอบ

ที่จำเป็น โดยใช้จาวาสคริปต์คือการเรียกเมธอด .show() และ .close() พวกเขาได้รับการกล่าวถึงก่อนหน้านี้แล้ว

(function() ( var dial = document.getElementById("Dialog"); document.getElementById("showDialog").onclick = function() ( Dialog.show(); ); document.getElementById("closeDialog").onclick = ฟังก์ชั่น() ( Dialog.close(); ))();

(การทำงาน() (

เอกสาร. getElementById("showDialog"). onclick = ฟังก์ชั่น () (

กล่องโต้ตอบ แสดง();

เอกสาร. getElementById("closeDialog"). onclick = ฟังก์ชั่น () (

กล่องโต้ตอบ ปิด();

} ) () ;

ทุกอย่างพร้อมแล้ว อย่างที่คุณเห็น เราใช้โค้ดจำนวนบรรทัดน้อยที่สุด ซึ่งไม่สมส่วนกับสิ่งที่จะเกิดขึ้นหากเราเชื่อมต่อปลั๊กอินของบุคคลที่สามเพื่อทำสิ่งนี้ ตอนนี้เมื่อคุณคลิกที่ปุ่ม "เปิดหน้าต่าง" คุณจะเห็นกล่องโต้ตอบ การคลิกที่ปุ่ม "ปิด" จะซ่อนไว้

กล่องโต้ตอบสไตล์

ฉันไม่คิดว่าจำเป็นต้องเจาะลึกถึงวิธีจัดสไตล์หน้าต่างป๊อปอัปนี้ให้ลึกซึ้งเกินไป ใช้ CSS- ทุกอย่างชัดเจนมากที่นี่แม้ไม่ได้รับความช่วยเหลือจากฉันก็ตาม ฉันจะระบุเฉพาะสไตล์ทั่วไปสำหรับเลย์เอาต์เท่านั้น

กล่องโต้ตอบ (ด้านบน: 28%; ความกว้าง: 400px; เส้นขอบ: 1px ทึบ rgba (0, 0, 0, 0.3); รัศมีเส้นขอบ: 15px; กล่องเงา: 0 3px 7px rgba (0, 0, 0, 0.3); ขอบบน: 5px solid #eb9816; ) ปุ่ม (แสดง: inline-block; border-radius: 3px; border: none; ขนาดตัวอักษร: 0.9rem; padding: 0.4rem 0.8em; พื้นหลัง: #eb9816; border-bottom : 1px solid #f1b75c; Font-weight: ตัวหนา; ระยะขอบ: 0 0.25rem; ปุ่ม: โฮเวอร์, ปุ่ม: โฟกัส ( ความทึบ: 0.92; เคอร์เซอร์: ตัวชี้; )

กล่องโต้ตอบ (

ด้านบน: 28%;

ความกว้าง: 400px;

เส้นขอบ : 1px rgba ทึบ (0, 0, 0, 0.3 ) ;

รัศมีเส้นขอบ: 15px;

กล่องเงา : 0 3px 7px rgba (0, 0, 0, 0.3 );

ขอบบน : 5px solid #eb9816 ;

ปุ่ม(

จอแสดงผล: อินไลน์บล็อก;

รัศมีเส้นขอบ: 3px;

เส้นขอบ: ไม่มี;

ขนาดตัวอักษร: 0.9rem;

ช่องว่างภายใน: 0.4rem 0.8em;

พื้นหลัง : #eb9816 ;

ขอบล่าง : 1px solid #f1b75c ;

สี : ขาว ;

น้ำหนักตัวอักษร: ตัวหนา;

ระยะขอบ : 0 0.25rem ;

การจัดแนวข้อความ: กึ่งกลาง;

ปุ่ม:โฮเวอร์, ปุ่ม:โฟกัส (

ความทึบ: 0.92;

เคอร์เซอร์: ตัวชี้;

การสร้างกล่องโต้ตอบ Modal

หากคุณต้องการเน้นความสนใจของผู้ใช้ไปที่หน้าต่างป๊อปอัป คุณควรใช้กล่องโต้ตอบโมดอล การโทรของพวกเขาไม่แตกต่างจากการโทรปกติมากนัก คุณจะต้องเปลี่ยนไฟล์ JS .show() เป็น .showModal() เท่านั้น คุณไม่จำเป็นต้องเปลี่ยนแปลงอะไรใน HTML

(function() ( var dial = document.getElementById("Dialog"); document.getElementById("showDialog").onclick = function() ( Dialog.showModal(); ); document.getElementById("closeDialog").onclick = ฟังก์ชั่น() ( Dialog.close(); ))();

(การทำงาน() (

var โต้ตอบ = เอกสาร getElementById("กล่องโต้ตอบ");