• 5313 fans
  • 1036 reader
  • 138 followers
CSS display: inline-block
  • Tutorial Details
  • Độ khó: Căn bản
  • Thời gian: 30 phút
  • File size: < 1 Mb

Thông thường, khi bạn muốn tạo một list đối tượng nằm ngang thì bạn cần phải sử dụng float:left/right. Tuy nhiên, các bạn có thể sử dụng display:inline-block để làm điều đó một cách đơn giản hơn. Trong bài viết này mình sẽ giới thiệu các bạn cách sữ dụng và cách fix để sử dụng cho IE7.

Float rất khó chơi

Rắc rối khi chúng ta sử dụng float khá là nhiều, có thể kể đến một số vấn đề như sau:

  • Kết thúc float phải dùng clear, nếu không sẽ bị tràn nội dung.
  • Phải có width chính xác của thành phần cha và con.

inline vs block

Khái niệm về Inline và Block là một khái niệm hết sức cơ bản nhưng cũng cực kỳ quan trọng trong CSS. Hiểu được từng đặc điểm của mỗi thành phần là chìa khóa quan trọng để bạn có thể vận hành CSS theo ý muốn. Trong bài này tôi sẽ nói về chức năng của từng thành phần. Tuy nhiên tôi sẽ vẫn giữ nguyên từ chuyên ngành là Block và Inline mà không dịch ra tiếng Việt là “khối” và “trong dòng” nghe cùi quá.
Khi các thành phần HTML được hiển thị trên trình duyệt nó thường có 2 cách hiển thị là theo Block và Inline. Nói hình tượng để bạn dễ hiểu thì các thành phần Block giống như một bàn cờ và các thành phần Inline là quân cờ. Các quân cờ nằm trong bàn cờ và bàn cờ thì không bao giờ nằm trong quân cờ. Đây cũng là một nguyên tắc cơ bản nhất của Inline và Block. Thành phần inline có thể nằm trong thành phần Block, nhưng Block không thể nằm trong thành phần Inline.
(Trích từ bài viết “Thành phần Block và Inline” của tác giả Demon Warlock)

inline+block

Display:inline-block được thừ hưởng 2 yếu tố của inline và block. Đo đó, về mặt căn bản thì nó sẽ giúp đối tượng hiển thị theo chiều ngang và có thể ấn định được các thuộc tính width, height, padding.
Để hiểu rõ hơn, bạn có thể xem thêm về ví dụ sau.

Code html & css

<style type="text/css">
ul#inlineBlock{
	list-style: none inside;
	margin: 50px 50px;
}
ul#inlineBlock li{
	background-color: #CD2C24;
	-webkit-box-shadow: 2px 2px 0 #00A388;
	box-shadow: 2px 2px 0 #00A388;			
	padding: 5px 10px;
	display: inline-block;
	margin-right: 3px;
	margin-left: 0px;
	font-size: 15px;
	text-transform: uppercase;
	border-radius: 3px;
	position: relative;
}
ul#inlineBlock li a{
	color: white;
	text-decoration: none;
	font-weight: 600;
}
</style>
<ul id="inlineBlock">
	<li><a href="#">Trang chủ</a></li>
	<li><a href="#">Giới thiệu</a></li>
	<li><a href="#">Sản phẩm</a></li>
	<li><a href="#">Dịch vụ</a></li>
	<li><a href="#">Liên hệ</a></li>		
</ul>

Kết quả hiển thị

Nếu như chúng ta thả nổi height của li thì thuộc tính vertical-align có thể sử dụng được. Xem ví dụ đưới đây:

Code CSS, bạn thêm vào css selector “ul#inlineBlock li” đoạn thuộc tính sau:

vertical-align: middle;

Và sữa thêm một chút tại thẻ li này để chúng ta có được thuộc tính height thả nổi:

<li><a href="#">Giới thiệu <br>Giới thiệu <br>Giới thiệu <br>Giới thiệu</a></li>

kết quả hiển thị

Tuy inline-bock rất hữu dụng nhưng lại ko hiển thị tốt trên IE7, và sau đây là cách chữa. Code CSS, bạn thêm vào css selector “ul#inlineBlock li” đoạn thuộc tính sau:

/*fix for IE 7*/
zoom:1;
*display: inline;

Võ Minh Mẫn Website facebook twitter user_email

Nghề chính là chém gió, quăng bom và ném lựu đạn. Nghề phụ là cắt cỏ, chém chuối, cưa cây......

  • Kim Mã DPA

    Cám ơn IzWebz và tác giả

    Võ Minh Mẫn, bài hướng dẫn chi tiết và dễ hiểu. Thêm 1 nguồn tư liệu tốt để học tập

  • chipu

    Mình vẫn dùng float: l / r đó bạn. ie 6 vẫn chạy chuẩn đó thôi. hiểu thì sẽ dễ dùng. tuy nhiên các trên cũng là 1 cách mới để dùng ;) )

  • http://www.facebook.com/hung.duong.108 Hung Duong

    hay, dễ hiểu, thank a nhiệt tình luôn

  • trunghiep08dh

    nhiệt liệt ủng hộ admin (Mẫn hay gì đó..)…dùng ngôn từ bình dân,vui vẻ…chúa ghét cách dùng từ khô khan và khó hiểu của mấy ông nội chuyên bên lập trình!^^

  • đặng hải

    thuộc tính inline và inline-block thì có gì giống và khác nhau không bác? Em dùng thấy cả 2 đều cho kết quả như nhau ?

    • Pirates Pirates

      Nếu bạn chỉ để Inline ví dụ bạn viết ola olala olalala thì background màu đỏ chỉ chiếm đến độ dài mỗi từ đó div id=”wrap”>

      Home Page aloalo Alooooo
      Forums
      FAQs
      Member


      css :*{margin:0;padding:0}
      #wrap{
      float:left;
      list-style: none inside;
      margin: 50px 50px;
      }

      #wrap li{
      background-color: #CD2C24;
      box-shadow: 2px 2px 0 #00A388;
      padding: 5px 10px;
      display: inline-block;
      margin-right: 3px;
      margin-left: 0px;
      font-size: 15px;
      text-transform: uppercase;
      border-radius: 3px;
      position: relative;
      vertical-align: middle;
      }
      #wrap li a{
      font-weight:bold;
      text-decoration: none;
      color: white;
      }

    • Eyeless Jack

      bạn có thể nôm na là display: inline giống như kiểu bạn viết chứ trên một tờ giấy.
      còn display: block giống như bạn kẻ một ô vuông trên một tờ giấy

  • Công

    Công nhận a Mẫn vui tính thật đó nhá !he.Ủng hộ a.ủng hộ a DW.ủng hộ Izwebz

  • http://scarheal.com.vn Ngoc Loi

    Sau mình test trên navigator không chạy nhĩ? Mấy trình duyệt khác thì ok.

  • http://vanphongphamsieure.vn huy2407

    Bài viết rất hay.Cám ơn đã chia sẻ

  • http://www.shoptretho.com.vn Trần Tuấn Anh

    Thuộc tình display: inline-block không chạy được trên IE 7, thế nên mặc dù nó rất hay nhưng khi làm menu để phù hợp vấn đề tương thích các trình duyệt, mình vẫn dùng float. Bạn nào có giải pháp dùng inline-block mà tương thích với IE 7 không giúp mình với.

  • http://deezsign.forumotion.com/ Juskteez

    Mình toàn dùng display: inline khi tạo Menu với thẻ mà các nguồn tải về thì họ toàn dùng float: left ! Không ngờ mình sáng tạo phết :D
    p/s: Bài viết quá hay!

  • BiBi

    Thanks bạn nhiều, vậy là mình biết thêm một thuộc tính css inline-block.

  • Hoang Anh

    Cho mình hỏi *display: inline; tại sao lại * trước display:inline; không biết nó có tác dụng như thế nào.

    • http://minhman.me Võ Minh Mẫn

      tác dụng của nó là để fix cho IE7 đây, còn giải thích rõ ràng thì cũng chịu thôi. :)

      • Hoang Anh

        Cám ơn anh Minh Mẫn giải thích. Thì ra nó chỉ có tác dụng sửa lỗi cho trình duyệt IE. Cũng vì thấy nhiều cái lệnh CSS mà thuộc tính có dấu * phía trước không biết nó là gì, tác dụng ra sao.

    • http://thietbispa.vn Ngoc Loi

      Theo mình nghĩ cái *display: inline có cái (*) là dùng để hack thằng IE 7 thui không có tác dụng với trình duyệt khác.

  • http://kangaroothemes.com Duc Nguyen

    Nếu biết quản lý thì float rất dễ, không nhất thiết sau mỗi float đều dùng clear, với các thành phần nhỏ thì dùng inline-block được chứ các thành phần lớn e rằng hơi khó. Mình thấy các author hay “dọa” các bạn mới vào nghề về float, bản thân mình cho rằng float một trong các thuộc tính hay ho nhất mà css mang lại :)

    • FanDW

      Mình tàn dùng #wrapper position:ralative; còn mấy cái div trong #wrapper thì position:absolute hết cho dễ mà chẳng dùng float mấy, chỉ thỉnh thoảng có ảnh thì float .Code mình hơi dài, nhưng kết quả cuối cùng vẫn làm ra giao diện , Cũng chẳng biết code thế tối ưu chưa nữa :|

    • Anh Tú Phùng

      Chuẩn đấy. float chẳng có gì mà khó dùng. Hiểu là dùng dễ hết. @1970fadad797acb364c9edc0bb2a570b:disqus tôi biết ông rồi đấy

  • Mr Tri

    Thanks izwebz. Một bài viết hay.

  • Trần Đình Chương

    cái này đúng là hay!!. Mấy bữa tìm không ra, hôm nay vô izwebz lại vô tình thấy bí kiếp!!

  • FanDW

    Sau 1 tháng học html css trong Izwebz giờ thì em cũng cắt hơi hơi tạm được tuy không 100%, Nhưng so cách đây 1 tháng thì tiến bộ rất nhiều. Giờ em đang dowload mấy cái giáo trình Jquery của xếp DW keỳ tiếp Thank IZwebz nhá hihi. Nhiều bạn theo đến cùng học Tutorial trong Izwebz có thể đi làm kiếm tiền đấy :D i love you Izwebz , thank tất cả

Izwebz store
Izwebz store

Các series nên xem trên izwebz cho newbie

Khi vào izwebz chắc nhiều bạn cho rằng các bài viết trên izwebz đều không có hệ thống gì cả? Thực chất, các bài biết đều đi theo một series của riêng nó, ví dụ như PHP, HTML & CSS, PSD2HTML, Photoshop, illustrator,… Trong bài viết này, mình sẽ tổng hợp lại các series bài viết cần thiết cho một newbie.

Izwebz facebook group

Social connect

Recent Comments

Archives