ฉันจะหยุดเค้าโครง CSS ไม่ให้บิดเบือนเมื่อซูมเข้า/ออกได้อย่างไร

ฉันได้ตั้งค่าไซต์ขั้นพื้นฐานด้วย #container div ที่รวม #navbar และ #content อย่างไรก็ตาม เมื่อฉันซูมเข้าหรือออก #navbar จะบิดเบี้ยว หากฉันซูมเข้า ลิงก์ต่างๆ จะถูกผลักลงด้านล่างกันแทนที่จะอยู่ในบรรทัด ถ้าฉันซูมออก จะมีการเพิ่มช่องว่างระหว่างลิงก์มากเกินไป ฉันจะหยุดสิ่งนี้ได้อย่างไร?

HTML:

<div id="navbar">
<ul>
    <li><a href="/thindex.html">Home</a></li>
    <li><a href="/thtop.html">Top</a></li>
    <li><strong><a href="/thfree.html">FREE</a></strong></li>
    <li><a href="/thphoto.html">Photo</a></li>
    <li><a href="/thabout.html">About</a></li>
    <li><a href="/thcontact.html">Contact Us</a></li>
</ul>
</div>

<div id="content">

<p>Some sample text.<p>

</div>


</div>

ซีเอสเอส:

#container {

    position: static;
    background-color: #00bbee;
    margin-left: 20%;
    margin-right: 20%;
    margin-top: 7%;
    margin-bottom: 15%;
    border: 2px solid red;


}

#navbar  ul{

    list-style: none;



}

#navbar  li{

    display: inline;

}

#navbar li a{

    text-decoration: none;
    color: #11ff11;
    margin: 3%;
    border: 1px dotted orange;
    padding-left: 4px;

}

#navbar li a:hover {

    background-color: white;
    color: green;

}

#navbar {

    background-color: #eeeeee;
    padding-top: 2px;
    padding-bottom: 5px;
    border: 1px solid yellow;

}

ฉันจะหยุดไม่ให้บิดเบือนได้อย่างไร?

นอกจากนี้ ฉันยังค่อนข้างใหม่กับ CSS ฉันถูกสอนให้ใช้ % แทน px นั่นถูกต้องใช่ไหม? นอกจากนี้ มีอะไรอีกที่คุณจำเป็นต้องชี้ให้เห็น โปรดแจ้งให้เราทราบ

ขอบคุณล่วงหน้า!


person Pztar    schedule 14.03.2012    source แหล่งที่มา
comment
คุณใช้เบราว์เซอร์ใดในการทดสอบด้วย? โดยทั่วไปแล้วจะจัดการการซูมแตกต่างกันมาก ฉันคิดว่าเปอร์เซ็นต์จะทำให้สิ่งต่าง ๆ แย่ลงเช่นกัน   -  person zim2411    schedule 14.03.2012
comment
ฉันจะไม่กังวลเกี่ยวกับมัน เบราว์เซอร์บางตัวมี 'การซูมข้อความ' แทนที่จะซูมทั้งหน้า อาจเป็นการดีกว่าที่จะมุ่งเน้นความพยายามไปที่เลย์เอาต์ที่ไม่บิดเบี้ยวเมื่อขนาดข้อความเปลี่ยนแปลง ... ไม่ใช่การใช้งานการซูมเบราว์เซอร์ แต่จะแตกต่างกันไปและคุณไม่สามารถควบคุมได้จริงๆ   -  person dave    schedule 15.03.2012
comment
ฉันใช้ไฟร์ฟ็อกซ์ จะต้องมีวิธีที่จะป้องกันไม่ให้มันบิดเบี้ยว ฉันรู้ว่าเมื่อฉันเคยลองสร้างเลย์เอาต์ css มาก่อน ส่วนต่างๆ ของหน้าจะบิดเบี้ยวและไปอยู่ใต้กันและกัน   -  person Pztar    schedule 15.03.2012
comment
ที่ผ่านมา คุณเคยให้คำตอบที่คุณคิดว่าน่าพอใจบ้างไหม?   -  person Andy Mercer    schedule 19.05.2014
comment
@Pztar เกี่ยวกับเปอร์เซ็นต์มีเวลาและสถานที่ นั่นรวมถึง px, em, rem, pt, pc ฯลฯ ฯลฯ ... เพื่อให้เลย์เอาต์ดูเหมือนเดิม คุณอาจต้องการให้องค์ประกอบที่เกี่ยวข้องใช้ px   -  person MDEV    schedule 10.08.2014


คำตอบ (9)


เนื่องจากคำถามนี้ยังคงมีผู้ดูอย่างต่อเนื่อง ฉันจะโพสต์วิธีแก้ปัญหาที่ฉันใช้อยู่ในปัจจุบัน

ข้อความค้นหาสื่อ CSS:

@media screen and (max-width: 320px) { 

/*Write your css here*/

}

@media screen and (max-width: 800px) { 

}

ลองดู: CSS-Tricks + ขนาดอุปกรณ์ และ คำค้นหาสื่อ

person Pztar    schedule 14.05.2015

ฉันมีปัญหาที่คล้ายกันซึ่งแก้ไขโดยการเพิ่ม div พิเศษในเมนูนำทางของฉัน จากนั้นฉันก็เพิ่มสิ่งต่อไปนี้

#menu-container {
    position: absolute;
    white-space: nowrap;
    overflow: hidden;

}

ซึ่งทำให้ไม่สามารถห่อได้ หวังว่ามันจะได้ผล

person London804    schedule 15.03.2013
comment
การซ่อนสิ่งต่าง ๆ ไม่ใช่วิธีแก้ปัญหา - person Muhammad Bilal; 22.03.2018

หากต้องการแก้ไขปัญหาการซูมเข้า ให้ลองเพิ่มแอตทริบิวต์ min-width ให้กับตัวนับภายนอก (#container หรือ #navbar?) การตั้งค่า min-width ป้องกันไม่ให้หน้าเว็บพยายามย่อขนาดลงเกินความกว้างที่ระบุ (เช่น 300px) หากคุณซูมเข้ามากเกินไป แทนที่จะให้องค์ประกอบภายใน <div> กระโดดลงมาที่บรรทัดถัดไป แถบนำทางของคุณจะหยุดย่อขนาดและแถบเลื่อนจะปรากฏที่ด้านล่างของหน้า

ตัวอย่าง (ในสไตล์ชีทของคุณ):

#navbar {min-width:300px;}

อีกวิธีที่ดีในการบรรลุเป้าหมายนี้คือการใช้แอตทริบิวต์ min-width กับเนื้อหาของหน้า

ตัวอย่าง (ในสไตล์ชีทของคุณ):

body {min-width:300px;}

สุดท้ายนี้ หากคุณต้องการให้แถบนำทางของคุณขยายเต็มความกว้างของหน้า ให้ใช้ {clear:both;} ในสไตล์ชีต

person helper    schedule 27.06.2013
comment
อย่าใช้ { clear: ทั้งสอง; } หากคุณไม่ได้ใช้ floats... และตามตัวอย่างของคุณที่โพสต์ในคำถาม คุณไม่ได้ใช้ floats - person PerryCS; 05.12.2017

อืม....คุณได้ลองเพิ่มคุณสมบัติ min-width/min-height แล้วหรือยัง? คุณสามารถรวมคุณสมบัติเหล่านั้นไว้ใน #container div ของคุณได้ นั่นอาจเป็นเพียงการหลอกลวง

person Lobabob    schedule 21.03.2012

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

ดู: http://www.codinghorror.com/blog/2009/01/the-two-types-of-browser-zoom.html

person Diodeus - James MacFarlane    schedule 14.03.2012

ฉันจะตั้งค่าความสูงและความกว้างสัมบูรณ์ให้กับองค์ประกอบ/div ทั้งหมดบนหน้า

รหัส {ความสูง: 250px; ความกว้าง: 500px}

หรือคุณสามารถใช้ต่ำสุด/ความกว้างสูงสุด/สูงเพื่อปรับเค้าโครงหน้าตามขนาดหน้าจอต่างๆ หรือเมื่อปรับขนาดหน้าต่างเบราว์เซอร์

person Dominik Schmidt    schedule 10.05.2014

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

person RedDevils    schedule 07.10.2014
comment
โปรดอธิบายคำตอบของคุณอย่างละเอียด - person Adrian Forsius; 07.10.2014

เอาล่ะ นี่เป็นเหมือนคำแนะนำข้างต้นมาก แต่มันมีพื้นที่เนื้อหาที่มีความกว้างคงที่ หากคุณกำลังมองหาความกว้างเต็ม ฉันขอโทษ (;_;)

<style>
body {
    margin:0px;
}
#container {
    width:990px;
    background-color: #00bbee;
    margin:0 auto;
    border: 2px solid red;
}
#navbar ul {
    list-style: none;
}
#navbar li {
    display: inline;
}
#navbar li a {
    text-decoration: none;
    color: #11ff11;
    margin: 3%;
    border: 1px dotted orange;
    padding-left: 4px;
}
#navbar li a:hover {
    background-color: white;
    color: green;
}
#navbar {
    background-color: #eeeeee;
    padding-top: 2px;
    padding-bottom: 5px;
    border: 1px solid yellow;
}
</style>

<div id="container">
  <div id="navbar">
    <ul>
      <li><a href="/thindex.html">Home</a></li>
      <li><a href="/thtop.html">Top</a></li>
      <li><strong><a href="/thfree.html">FREE</a></strong></li>
      <li><a href="/thphoto.html">Photo</a></li>
      <li><a href="/thabout.html">About</a></li>
      <li><a href="/thcontact.html">Contact Us</a></li>
    </ul>
  </div>
  <div id="content">
    <p>Some sample text.
    <p> 
  </div>
</div>
person Gordon Mcleod    schedule 10.10.2014

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

person jimmybisenius    schedule 18.02.2015