ฉันใช้visibility:hidden
เพื่อซ่อนองค์ประกอบบางอย่าง แต่พวกเขายังคงใช้พื้นที่บนหน้าเว็บในขณะที่ซ่อนอยู่
ฉันจะทำให้พวกเขาหายตัวไปอย่างสิ้นเชิงได้อย่างไรราวกับว่าพวกเขาไม่ได้อยู่ใน DOM เลย (แต่ถ้าไม่ได้ลบพวกเขาออกจาก DOM)?
ฉันใช้visibility:hidden
เพื่อซ่อนองค์ประกอบบางอย่าง แต่พวกเขายังคงใช้พื้นที่บนหน้าเว็บในขณะที่ซ่อนอยู่
ฉันจะทำให้พวกเขาหายตัวไปอย่างสิ้นเชิงได้อย่างไรราวกับว่าพวกเขาไม่ได้อยู่ใน DOM เลย (แต่ถ้าไม่ได้ลบพวกเขาออกจาก DOM)?
คำตอบ:
ลองตั้งค่าdisplay:none
ให้ซ่อนและตั้งค่าdisplay:block
ให้แสดง
display: block
บางส่วนจะต้องมีการตั้งค่าให้display: inline
(เช่น<span>
หรือ<a>
หรือ<img>
องค์ประกอบ DOM)
hidden
display: none
เพิ่มคลาสลงในองค์ประกอบเพื่อซ่อนลบออกแสดง เมื่อลบออกdisplay
คุณสมบัติจะถูกกู้คืนเป็นองค์ประกอบเริ่มต้น
ใช้สไตล์แทนเช่น
<div style="display:none;"></div>
เพื่อใช้display:none
เป็นตัวเลือกที่ดีเพียงเพื่อเอาองค์ประกอบ แต่มันจะเป็นยังลบออก screenreaders นอกจากนี้ยังมีการอภิปรายหากมีผลกระทบต่อ SEO มีบทความสั้น ๆ ที่ดีเกี่ยวกับหัวข้อนั้นใน A List Apart
หากคุณต้องการซ่อนและไม่ลบองค์ประกอบจริงๆควรใช้:
div {
position: absolute;
left: -999em;
}
เช่นนี้มันสามารถอ่านได้โดยโปรแกรมอ่านหน้าจอ
ข้อเสียเพียงอย่างเดียวของวิธีนี้คือการแสดงผล DIV จริงและอาจส่งผลต่อประสิทธิภาพโดยเฉพาะบนโทรศัพท์มือถือ
visibility: hidden;
ช่วยบอกว่าคุณมีองค์ประกอบอื่น ๆ z-index
แน่นอนพวกเขาจะไม่ได้มีความขัดแย้งสำหรับพื้นที่เพียงความขัดแย้งทางผล เพียงเพื่อซ่อนองค์ประกอบที่ฉันจะไปด้วยvisibility
ดูแทนการใช้การใช้งานvisibility: hidden;
display: none;
ตัวเลือกแรกจะซ่อน แต่ยังคงใช้พื้นที่และตัวเลือกที่สองจะซ่อนและไม่ใช้พื้นที่ใด ๆ
คำตอบสำหรับคำถามนี้บอกว่าใช้ display: none และ display: block แต่สิ่งนี้ไม่ได้ช่วยใครบางคนที่พยายามใช้การเปลี่ยน css เพื่อแสดงและซ่อนเนื้อหาโดยใช้คุณสมบัติการมองเห็น
สิ่งนี้ทำให้ฉันบ้าด้วยการใช้จอแสดงผลฆ่าการเปลี่ยน CSS ใด ๆ
ทางออกหนึ่งคือการเพิ่มสิ่งนี้ลงในคลาสที่ใช้การมองเห็น:
overflow:hidden
เพื่อให้การทำงานนี้ขึ้นอยู่กับเค้าโครง แต่ควรเก็บเนื้อหาว่างไว้ใน div ที่อยู่
จอแสดงผล: ไม่มีวิธีการแก้ปัญหาที่ซ่อนองค์ประกอบอย่างสมบูรณ์ด้วยพื้นที่ของมัน
display:none
และvisibility: hidden
visibility:hidden
หมายความว่ามองไม่เห็นแท็ก แต่มีการจัดสรรพื้นที่บนแท็ก
display:none
หมายถึงการซ่อนองค์ประกอบอย่างสมบูรณ์ด้วยพื้นที่ของมัน (แม้ว่าคุณจะยังสามารถโต้ตอบกับมันผ่าน DOM)
display:none
เพื่อซ่อนและตั้งค่าdisplay:block
ให้แสดง
as though they are not in the DOM at all (but without actually removing them from the DOM)
visibility: hidden
หยุดการแสดงเนื้อหาเท่านั้น แต่ยังคงใช้พื้นที่แนวตั้ง / แนวนอนแสดง: ไม่มีลบพื้นที่แนวตั้ง / แนวนอนสำหรับองค์ประกอบ
การสลับdisplay
ไม่อนุญาตสำหรับการเปลี่ยน CSS ที่ราบรื่น แต่สลับทั้งในและvisibility
max-height
visibility: hidden;
max-height: 0;
transform: translateX(-100%)
เพราะเราจะซ่อนองค์ประกอบที่อยู่นอกพื้นที่ที่มองเห็นโดยใช้สิ่งที่ต้องการ เราไม่ต้องการdisplay: none
นี่คือสิ่งที่แตกต่างออกไปในการนำพวกเขากลับมาหลังจากที่แสดง: ไม่มี อย่าใช้ display: block / inline เป็นต้นแทน (หากใช้ javascript) ให้ตั้งค่าคุณสมบัติ css display เป็น '' (เช่นว่างเปล่า)
$('#abc').css({"display":"none"});
วิธีนี้จะซ่อนเนื้อหาและไม่เว้นที่ว่าง
เหนือความรู้ของฉันมันเป็นไปได้ใน 4 วิธี
<button style="display:none;"></button>
#buttonId{ display:none; }
$('#buttonId').prop('display':'none');
& $("#buttonId").css('opacity', 0);
จอแสดงผล: ไม่มีสิ่งที่ดีที่สุดในการหลีกเลี่ยงพื้นที่สีขาวในเพจ
ใช้!important
หากคุณถูกบังคับให้แทนที่สไตล์ CSS ที่มีอยู่
display: none !important;
offsetTop
และdisplay:none
ตั้งค่าเป็นoffsetTop
0 วิธีแก้ปัญหาของฉันที่นี่คือใช้visibility: hidden
จากนั้นตั้งค่าความกว้างและความสูงเป็น 0 เมื่อฉันต้องการให้องค์ประกอบมองเห็นได้อีกครั้งฉันลบแอตทริบิวต์สามรายการโดยใช้ จาวาสคริ โซลูชันแฮ็คเล็กน้อย แต่ใช้ได้ดีสำหรับกรณีใช้งานเกือบทั้งหมด