Bagaimana cara menghentikan distorsi tata letak CSS saat memperbesar/memperkecil?

Saya telah menyiapkan situs yang sangat mendasar dengan div #container yang mencakup #navbar dan #content. Namun, saat saya memperbesar atau memperkecil, #navbar terdistorsi, jika saya memperbesar, tautan akan terdorong ke bawah dan bukannya sejajar. Jika saya memperkecil, terlalu banyak padding yang ditambahkan di antara tautan. Bagaimana cara menghentikan ini?

HTML:

<div id="navbar">
<ul>
    <li><a href="/idindex.html">Home</a></li>
    <li><a href="/idtop.html">Top</a></li>
    <li><strong><a href="/idfree.html">FREE</a></strong></li>
    <li><a href="/idphoto.html">Photo</a></li>
    <li><a href="/idabout.html">About</a></li>
    <li><a href="/idcontact.html">Contact Us</a></li>
</ul>
</div>

<div id="content">

<p>Some sample text.<p>

</div>


</div>

CSS:

#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;

}

Bagaimana cara menghentikannya agar tidak terdistorsi?

Selain itu, saya masih cukup baru dalam CSS, saya diajari menggunakan %, bukan px. Apakah itu benar? Juga hal lain yang perlu Anda tunjukkan, harap beri tahu saya.

Terima kasih sebelumnya!


person Pztar    schedule 14.03.2012    source sumber
comment
Browser apa yang Anda gunakan untuk menguji? Mereka biasanya menangani zoom dengan cara yang sangat berbeda. Saya pikir persentasenya juga akan mengecewakan.   -  person zim2411    schedule 14.03.2012
comment
Saya tidak akan mengkhawatirkannya. Beberapa browser memiliki 'zoom teks' daripada memperbesar seluruh halaman. Mungkin lebih baik memfokuskan upaya pada tata letak agar tidak terdistorsi ketika ukuran teks berubah ... bukan penerapan pembesaran browser, ini akan bervariasi dan Anda tidak dapat mengontrolnya.   -  person dave    schedule 15.03.2012
comment
Saya menggunakan firefox. Pasti ada cara untuk menghentikannya agar tidak terdistorsi, saya tahu ketika saya mencoba membuat tata letak css sebelumnya, bagian halaman yang berbeda akan terdistorsi dan berada di bawah satu sama lain.   -  person Pztar    schedule 15.03.2012
comment
Pztar pernahkah anda memberikan jawaban yang menurut anda memuaskan?   -  person Andy Mercer    schedule 19.05.2014
comment
@Pztar Mengenai persentase, ada waktu dan tempat. Itu juga berlaku untuk px, em, rem, pt, pc dll.. Agar tata letaknya terlihat sama, Anda mungkin ingin elemen terkait menggunakan px   -  person MDEV    schedule 10.08.2014


Jawaban (9)


Karena pertanyaan ini masih mendapat pandangan konstan, saya akan memposting solusi yang saya gunakan saat ini.

Pertanyaan Media CSS:

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

/*Write your css here*/

}

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

}

Lihat: Trik CSS + ukuran perangkat dan Pertanyaan Media

person Pztar    schedule 14.05.2015

Saya memiliki masalah serupa yang saya perbaiki dengan menambahkan div tambahan di sekitar menu navigasi saya. Saya kemudian menambahkan yang berikut ini

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

}

Hal ini mencegahnya membungkus. Semoga berhasil.

person London804    schedule 15.03.2013
comment
menyembunyikan sesuatu bukanlah solusi - person Muhammad Bilal; 22.03.2018

Untuk memperbaiki masalah zoom in, coba tambahkan atribut min-width ke penghitung luar Anda (#container atau #navbar?). Pengaturan min-width mencegah halaman web mencoba menyusut melebihi lebar yang ditentukan (yaitu 300 piksel). Jika Anda memperbesar terlalu jauh, alih-alih elemen di dalam <div> melompat ke baris berikutnya, bilah navigasi Anda akan berhenti menyusut dan bilah gulir akan muncul di bagian bawah halaman.

Contoh (di stylesheet Anda):

#navbar {min-width:300px;}

Cara lain yang baik untuk mencapai hal ini adalah dengan menerapkan atribut min-width ke badan halaman.

Contoh (di stylesheet Anda):

body {min-width:300px;}

Terakhir, jika Anda ingin membuat navbar Anda menjangkau seluruh lebar halaman, gunakan {clear:both;} di stylesheet.

person helper    schedule 27.06.2013
comment
Jangan gunakan { jelas: keduanya; } jika Anda tidak menggunakan float... dan menurut contoh yang Anda posting di pertanyaan, Anda TIDAK menggunakan float. - person PerryCS; 05.12.2017

Hmm....sudahkah Anda mencoba menambahkan properti min-width/min-height? Anda cukup memasukkan properti tersebut ke div #container Anda. Itu mungkin berhasil.

person Lobabob    schedule 21.03.2012

Browser yang berbeda menggunakan teknik zoom yang berbeda. Semuanya punya kesalahan. Penggunaan persentase akan menimbulkan kesalahan pembulatan. Tidak ada Jawaban yang mudah.

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

person Diodeus - James MacFarlane    schedule 14.03.2012

Saya hanya akan mengatur tinggi dan lebar absolut untuk semua elemen/div di halaman.

id {tinggi: 250 piksel; lebar: 500 piksel}

Atau Anda juga dapat menggunakan min/max-width/hight untuk menyesuaikan tata letak halaman pada ukuran layar yang berbeda atau saat mengubah ukuran jendela browser.

person Dominik Schmidt    schedule 10.05.2014

Hal ini terutama karena Anda telah menetapkan properti lebar atau margin dalam persentase. Jika Anda melakukannya, pastikan Anda memberikan lebar maksimum untuk elemen tersebut

person RedDevils    schedule 07.10.2014
comment
Silakan uraikan jawaban Anda - person Adrian Forsius; 07.10.2014

Ini dia, ini sangat mirip dengan saran di atas tetapi memiliki area konten dengan lebar tetap, jika Anda mencari lebar penuh, saya minta maaf (;_;)

<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="/idindex.html">Home</a></li>
      <li><a href="/idtop.html">Top</a></li>
      <li><strong><a href="/idfree.html">FREE</a></strong></li>
      <li><a href="/idphoto.html">Photo</a></li>
      <li><a href="/idabout.html">About</a></li>
      <li><a href="/idcontact.html">Contact Us</a></li>
    </ul>
  </div>
  <div id="content">
    <p>Some sample text.
    <p> 
  </div>
</div>
person Gordon Mcleod    schedule 10.10.2014

Anda akan ingin menggunakan kueri media css untuk menetapkan titik henti sementara untuk gaya berbeda di css Anda. Yang jika digunakan dengan benar akan memperbaiki masalah distorsi apa pun.

person jimmybisenius    schedule 18.02.2015