Trong bài hướng tự học CSS dẫn này, bạn sẽ học cách điều chỉnh phần không gian xung quanh một phần tử (Margin) bằng cách sử dụng CSS.
Trong bài hướng tự học CSS dẫn này, bạn sẽ học cách điều chỉnh phần không gian xung quanh một phần tử (Margin) bằng cách sử dụng CSS.
Nói đơn giản là cách xử lý margin trong CSS.
Thuộc tính margin trong CSS là gì?
Thuộc tính marign trong CSS cho phép bạn thiết lập khoảng cách xung quanh đường viền của hộp phần tử (hoặc cạnh của hộp phần tử, nếu nó không có đường viền).
Nếu bạn đã quên thì mời xem lại bài viết về CSS Box Model, hoặc xem lại hình minh họa ở dưới đây:
Lề (Margin) của một phần tử không bị ảnh hưởng bởi màu nền của nó, nó luôn trong suốt.
Tuy nhiên, nếu phần tử mẹ có màu nền, nó sẽ hiển thị qua vùng lề của nó.
1. Thiết lập margin trong CSS
Bạn có thể chỉ định margin cho các cạnh riêng lẻ của một phần tử như trên, phải, dưới và bên trái bằng cách sử dụng các thuộc tính CSS tương ứng:
margin-top
margin-right
margin-bottom
margin-left
Hãy thử ví dụ sau để hiểu cách nó hoạt động:
HTML:
<h1>Đây là một ví dụ về Margin</h1>
<p>Margin là phần lề của phần tử. Nó giúp chúng giữ khoảng cách với các phần tử khác</p>
Hãy xem ví dụ sau để hiểu cơ bản nó hoạt động như thế nào:
HTML:
<h1>Margin 4 cạnh đều nhau</h1>
<p>Margin Trái Phải bằng nhau và Trên, Dưới bằng nhau</p>
<div>Margin Trái Phải bằng nhau</div>
<hr />
<p>Ví dụ về viết tắt thuộc tính margin trong CSS</p>
CSS:
h1 {
margin: 50px; /* Áp dụng cho cả 4 cạnh */
}
p {
margin: 25px 75px; /* TOP và BOTTOM | LEFT và RIGHT */
}
div {
margin: 25px 50px 75px; /* TOP | LEFT và RIGHT | BOTTOM */
}
hr {
margin: 25px 50px 75px 100px; /* TOP | RIGHT | BOTTOM | LEFT */
}
h1, p, div {
background: #00ccc5;
}
Kết quả ta được như thế này:
Ký hiệu viết tắt này có thể nhận 1, 2, 3 hoặc 4 giá trị được phân tách bằng khoảng trắng.
Nếu 1 giá trị được chỉ định, nó sẽ được áp dụng cho cả bốn mặt.
Nếu 2 giá trị được chỉ định, giá trị 1 được áp dụng cho phía trên cùng và dưới cùng, và giá trị thứ 2 được áp dụng cho phía bên phải và bên trái của hộp phần tử.
Nếu 3 giá trị được chỉ định, giá trị 1 được áp dụng cho phía trên cùng, giá trị thứ 2 được áp dụng cho phía bên phải và bên trái, và giá trị 3 được áp dụng cho phía dưới.
Nếu 4 giá trị được chỉ định, chúng sẽ được áp dụng tương ứng cho phía trên, bên phải, dưới cùng và bên trái của hộp phần tử theo thứ tự đã chỉ định.
Bạn nên viết tắt thuộc tính margin, vì nó sẽ giúp bạn tiết kiệm thời gian, tránh nhiều code và làm cho code CSS của bạn dễ theo dõi và duy trì hơn.
Lưu ý: Lề của các phần tử sẽ nằm chồng lên nhau. Do đó, khoảng cách thực tế giữa 2 phần tử có thiết lập margin là bằng margin lớn hơn.
Cách căn giữa phần tử theo chiều ngang với marign auto
Giá trị auto cho thuộc tính margin nói cho trình duyệt web biết hãy tự động tính toán khoảng cách của lề.
Kết quả là trình duyệt sẽ căn phần tử ở giữa, theo chiều ngang.
Hãy thử ví dụ sau để hiểu cách nó hoạt động:
Mình có một thẻ div như sau:
<div class="container">
<h1>Div được căn giữa</h1>
<p>Bằng thuộc tính margin: 0 auto;.</p>
</div>
Trong bài hướng dẫn tự học CSS này, bạn sẽ học cách sử dụng CSS để tạo các đường viền (border) xung quanh của một phần tử.
Trong bài hướng dẫn tự học CSS này, bạn sẽ học cách sử dụng CSS để tạo các đường viền (border) xung quanh của một phần tử.
Thuộc tính border là gì?
Thuộc tính border trong CSS cho phép bạn tạo ra đường viền của hộp phần tử.
Các đường viền xuất hiện trực tiếp giữa phần lề (maring) và phần đệm (padding) của một phần tử.
Đường viền (border) có thể là kiểu được xác định trước như:
Đường viền nét liền
Đường viết nét đứt
Đường viền 2 nét
Hoặc cả hình ảnh
…
Phần dưới đây bạn sẽ học được cách thiết lập đường viền một cách chi tiết nhất.
Nhưng trước tiên, bạn dần biết
Có các kiểu border nào trong CSS?
Thuộc tính border-style trong CSScho phép thiết lập kiểu đường viền của hộp chẳng hạn như:
solid
dotted
…
Nó là thuộc tính viết tắt để thiết lập kiểu đường cho tất cả bốn cạnh của đường viền.
Ngoài ra, thuộc tính border-style còn có thể có các giá trị sau:
none
hidden
solid
dashed
dotted
double
inset
outset
grove
ridge
Bây giờ, hãy xem hình minh họa bên dưới đây, nó sẽ cho bạn thấy các kiểu viền khác nhau hiển thị như thế nào:
Các giá trị none và hidden không có đường viền.
Tuy nhiên, có một chút khác biệt giữa hai giá trị này.
Trong trường hợp ô của bảng và đường viền được thu gọn, giá trị none có mức độ ưu tiên thấp nhất, trong khi giá trị hidden có mức độ ưu tiên cao nhất, nếu có bất kỳ đường viền xung đột nào khác được thiết lập.
Các giá trị inset, outset, groove và ridge tạo ra hiệu ứng giống như 3D về cơ bản phụ thuộc vào giá trị border-color.
Điều này thường đạt được bằng cách tạo ra một ‘bóng’ từ hai màu sáng và tối hơn một chút so với màu của đường viền.
Lưu ý: Bạn phải chỉ định một kiểu đường viền để làm cho đường viền xuất hiện xung quanh một phần tử, vì kiểu đường viền mặc định là không có. Trong khi, chiều rộng hoặc độ dày của đường viền mặc định là medium và màu đường viền mặc định giống với màu văn bản.
Thiết lập chiều rộng của đường viền (border-width)
Thuộc tính border-width chỉ định chiều rộng của đường viền.
Nó là một thuộc tính viết tắt để thiết lập độ dày của tất cả bốn cạnh của đường viền phần tử cùng một lúc.
Nó có thể chấp nhận 4 giá trị tương ứng với TOP | RIGHT | BOTTOM | LEFT
3 giá trị tương ứng với TOP | RIGHT và LEFT | BOTTOM
2 giá trị tương ứng với TOP và BOTTOM | RIGHT và LEFT
Mẹo: Chiều rộng đường viền có thể được chỉ định bằng cách sử dụng bất kỳ giá trị chiều dài nào, chẳng hạn như px, em, rem, v.v. Ngoài các đơn vị chiều dài, chiều rộng đường viền cũng có thể được chỉ định bằng cách sử dụng một trong ba từ khóa: thin, medium và thick. Nhưng giá trị % thì không được.
Cách thiết lập màu sắc của đường viền (border-color)
Thuộc tính border-color chỉ định màu của đường viền. Đây cũng là một thuộc tính viết tắt để thiết lập màu của tất cả bốn cạnh của đường viền phần tử.
Các quy tắc CSS sau đây thêm một đường viền đặc màu đỏ xung quanh các đoạn văn.
Lưu ý: Thuộc tính border-width hoặc border-color trong CSS không hoạt động nếu nó được sử dụng một mình. Sử dụng thuộc tính border-style để thiết lập kiểu đường viền trước tiên.
Cách viết tắt thuộc tính border trong CSS
Thuộc tính border trong CSS là thuộc tính cho phép viết tắt để thiết lập một hoặc nhiều thuộc tính đường viền riêng lẻ là border-width, border-style và border-color trong một dòng code duy nhất.
Nếu giá trị cho một thuộc tính đường viền riêng lẻ bị bỏ qua hoặc không được chỉ định trong khi viết tắt, giá trị mặc định cho thuộc tính đó sẽ được sử dụng thay thế, nếu có.
Ví dụ: Nếu giá trị cho thuộc tính border-color bị thiếu hoặc không được chỉ định khi thiết lập đường viền, thì thuộc tính color của phần tử sẽ được sử dụng làm giá trị cho màu đường viền.
Trong ví dụ bên dưới, đường viền sẽ là một đường nét liền nét màu đỏ có chiều rộng 5 pixel:
Tuy nhiên, trong trường hợp của border-style, việc bỏ qua giá trị sẽ khiến không có đường viền nào hiển thị vì giá trị mặc định cho thuộc tính này là none.
Như trong ví dụ sau sẽ không có đường viền:
HTML:
<p>Không có đường viền vì border-style mặc định là none</p>
Trong hướng dẫn tự học CSS này, bạn sẽ học cách điều chỉnh vùng đệm (padding) của một phần tử bằng CSS.
Trong hướng dẫn tự học CSS này, bạn sẽ học cách điều chỉnh vùng đệm (padding) của một phần tử bằng CSS.
Padding là gì?
Thuộc tính padding trong CSS cho phép bạn thiết lập khoảng cách giữa nội dung của một phần tử và đường viền (border) của nó (hoặc cạnh của hộp phần tử, nếu nó không có border).
Phần đệm (padding) bị ảnh hưởng bởi màu nền (background-color) của phần tử.
Ví dụ: Nếu bạn đặt background cho 1 phần tử thì background này sẽ hiển thị lên cả phần padding.
Cách thiết lập padding
Bạn có thể chỉ định riêng lẻ các phần đệm cho các mặt của một phần tử như:
top là padding-top
right là padding-right
bottom là padding-bottom
left là padding-left
Hãy thử một ví dụ để hiểu cách nó hoạt động:
HTML:
<h1>Thử thiết lập Padding trong CSS</h1>
<p>Đây là một đoạn văn bản đơn giản</p>
Hãy xem ví dụ sau để hiểu cơ bản cách viết tắt padding hoạt động như thế nào:
HTML:
<h1>Đây là một tiêu đề</h1>
<p>Đây là một đoạn mô tả.</p>
<div>Đây thì là một thẻ DIV</div>
<pre>Đây là đoạn văn bản được định dạng sẵn</pre>
Còn đây là CSS:
h1, p, div, pre {
background: #00ccc5;
}
h1 {
padding: 50px; /* Áp dụng cho tất cả các mặt */
}
p {
padding: 25px 75px; /* Trên Dưới | Trái Phải */
}
div {
padding: 25px 50px 75px; /* Trên | Phải Trái | Dưới */
}
pre {
padding: 25px 50px 75px 100px; /* Trên | Phải | Dưới | Trái */
}
Ký hiệu viết tắt này có thể nhận một, hai, ba hoặc bốn giá trị được phân tách bằng khoảng trắng.
Nếu có 1 giá trị: Trình duyệt sẽ hiểu là cần đặt padding 4 mặt đều bằng giá trị đó
Nếu có 2 giá trị: Trình duyệt sẽ thiết lập padding-top và padding-bottom bằng giá trị đầu tiên, padding-right và padding-left bằng giá trị thứ hai.
Nếu có 3 giá trị: Giá trị đầu tiên là padding-top, giá trị thứ hai là padding-right và padding-left, giá trị thứ ba là padding-botttom.
Nếu có 4 giá trị: Thì nó áp dụng theo thứ tự lần lượt Top – Right – Bottom – Left
Bạn nên sử dụng cách viết tắt này, nó sẽ giúp bạn tiết kiệm thời gian, code ngắn hơn và dễ theo dõi, duy trì hơn.
Ảnh hưởng của padding và border lên bố cục
Khi tạo bố cục trang web, việc thêm padding hoặc border vào các phần tử đôi khi tạo ra kết quả không mong muốn.
Vì padding và border được tính vào chiều rộng và chiều cao thực tế mà phần tử sẽ chiếm.
Ví dụ: Nếu bạn đặt chiều rộng của phần tử div thành 100% và cũng áp dụng thêm padding hoặc border bên trái / phải trên phần tử đó, thanh cuộn ngang sẽ xuất hiện.
Hãy xem một ví dụ:
HTML:
<div>
<h1>Đây là một hộp DIV</h1>
</div>
CSS:
div {
width: 100%;
padding: 25px;
background: #00ccc5;
}
Để ngăn padding và border thay đổi chiều rộng và chiều cao hộp của phần tử, bạn có thể sử dụng thuộc tính box-sizing.
Trong ví dụ sau, chiều rộng và chiều cao của hộp div sẽ không thay đổi, tuy nhiên, phần nội dung của nó sẽ giảm tương ứng khi bạn tăng padding hoặc border.
Chỉ lại CSS như sau:
div {
width: 100%;
padding: 25px;
box-sizing: border-box;
}
Bạn sẽ tìm hiểu chi tiết về tính năng box-sizing trong các bài viết sắp tới.
Như vậy, qua bài viết này, mình đã giúp bạn hiểu về padding trong CSS cũng như cách viết tắt của thuộc tính padding.
Hãy làm lại ví dụ, chơi với nó để thực sự hiểu rõ nó nhé.
Trong hướng dẫn tự học CSS này bạn sẽ được tìm hiểu cách sử dụng CSS để thiết kích thước chiều rộng (width) và chiều cao (height) cho các phần tử HTML
Trong hướng dẫn tự học CSS này bạn sẽ được tìm hiểu cách sử dụng CSS để thiết kích thước chiều rộng (width) và chiều cao (height) cho các phần tử HTML.
Thiết lập kích thước phần tử trong CSS
CSS có một số thuộc tính kích thước, chẳng hạn như:
width: Chiều rộng
height: Chiều cao
max-width: Chiều rộng tối đa
min-width: Chiều rộng tối thiểu
max-height: Chiều cao tối đa
min-height: Chiều cao tối thiểu
Những thuộc tính kích thước trong CSS này cho phép bạn kiểm soát chiều rộng và chiều cao của một phần tử.
Các phần tiếp theo đây mình giúp giúp bạn hiểu rõ cách sử dụng các thuộc tính này để tạo bố cục trang web tốt hơn.
Thiết lập chiều rộng và chiều cao
Thuộc tính width và height xác định chiều rộng và chiều cao của vùng nội dung của một phần tử.
Chiều rộng và chiều cao này không bao gồm phần đệm (padding), đường viền (border) hoặc lề (margin).
Tại sao thì vui lòng xem lại bài Box Model trong CSS để biết cách tính chiều rộng và chiều cao thực tế của phần tử nhé.
Hãy thử ví dụ sau và xem nó thực sự hoạt động như thế nào:
HTML:
<div>Thử thiết lập kích thước phần tử xem nó hoạt động thế nào</div>
CSS:
div {
width: 300px;
height: 200px;
background: #003999;
}
Các quy tắc CSS trên chỉ định chiều rộng cố định là 300px và chiều cao là 200px cho phần tử div.
Thuộc tính chiều rộng và chiều cao có thể nhận các giá trị sau:
Một trong các loại kích thước px, em, rem, pt, cm, v.v. (Xem bài viết Thuộc tính font trong CSS để hiểu hơn về các loại kích thước)
%: Chỉ định chiều rộng tính bằng phần trăm (%) chiều rộng của phần tử chứa nó.
auto: Trình duyệt tự tính toán chiều rộng phù hợp cho phần tử.
initial: Đặt chiều rộng và chiều cao thành giá trị mặc định của nó, giá trị này là tự động.
inherit: Chỉ định rằng chiều rộng sẽ được kế thừa từ phần tử cha của nó.
Mẹo: Thông thường khi bạn tạo phần tử khối (block), chẳng hạn như div, p, v.v., trình duyệt sẽ tự động đặt chiều rộng của chúng thành 100% chiều rộng có sẵn và chiều cao vừa đủ để hiển thị tất cả nội dung nó chứa. Bạn nên tránh đặt chiều rộng và chiều cao cố định trừ khi cần thiết (Vì còn phải thiết kế đáp ứng – Responsive nữa)
Bạn có thể sử dụng thuộc tính max-width và max-height để chỉ định chiều rộng và chiều cao tối đa của vùng nội dung.
Chiều rộng và chiều cao tối đa này cũng không bao gồm padding, border, magin.
Một phần tử không được rộng hơn giá trị max-width, ngay cả khi giá trị thuộc tính width được đặt lớn hơn.
Ví dụ: Nếu chiều rộng được đặt thành 300px và chiều rộng tối đa được đặt thành 200px, thì chiều rộng thực tế của phần tử sẽ là 200px. Hãy xem ví dụ:
HTML:
<div>Chiều rộng tối đa của thẻ div này được đặt là 200px. Thế nên cho dù ta có đặt width = 300px thì nó cũng không thể rộng hơn được</div>
<p>Còn thẻ p này thì có chiều rộng tối đa là 1000px cơ.</p>
CSS:
div {
width: 300px;
max-width: 200px;
background: #003999;
}
p {
float: left;
max-width: 1000px;
background: #eee8aa;
}
Lưu ý: Nếu thuộc tính min-width có giá trị lớn hơn giá trị của thuộc tính max-width, trong trường hợp này, giá trị chiều rộng tối thiểu thực tế sẽ là giá trị được áp dụng.
Tương tự như thế, một phần tử đã áp dụng max-height sẽ không bao giờ cao hơn giá trị được chỉ định, ngay cả khi thuộc tính height được đặt thành giá trị lớn hơn.
Ví dụ: Nếu chiều cao được đặt thành 200px và chiều cao tối đa được đặt thành 100px, thì chiều cao thực của phần tử sẽ là 100px.
HTML:
<div>Chiều cao tối đa của thẻ div này được đặt là 30px. Thế nên cho dù ta có đặt height = 200px thì nó cũng không thể cao hơn được</div>
<p>Còn thẻ p này thì có chiều rộng tối đa là 500px cơ.</p>
CSS:
div {
height: 200px;
max-height: 30px;
background: #003999;
}
p {
max-height: 500px;
background: #eee8aa;
}
Lưu ý: Nếu giá trị thuộc tính min-height lớn hơn max-height, trong trường hợp này, giá trị chiều cao tối thiểu trên thực tế sẽ là giá trị được áp dụng
Thiết lập chiều rộng tối thiểu và chiều cao tối thiểu trong CSS
Bạn có thể sử dụng thuộc tính min-width và min-height chỉ định chiều rộng và chiều cao tối thiểu của vùng nội dung.
Chiều rộng và chiều cao tối thiểu này không bao gồm padding, border, margin.
Một phần tử không được hẹp hơn giá trị min-width, ngay cả khi giá trị thuộc tính width được đặt thành giá trị nhỏ hơn.
Ví dụ: Nếu width được đặt thành 300px và min-width được đặt thành 400px, thì chiều rộng thực tế của phần tử sẽ là 400px. Hãy xem nó thực sự hoạt động như thế nào:
HTML:
<div>Chiều rộng tối thiểu là 300px nên dù có đặt width = 200px thì nó cũng không thể nhỏ hơn</div>
<p>Thẻ p này min-width là 400px cơ.</p>
CSS:
div {
width: 200px;
min-width: 300px;
background: #003999;
}
p {
float: left;
min-width: 400px;
background: #eee8aa;
}
Lưu ý: Thuộc tính min-width thường được sử dụng để đảm bảo rằng một phần tử có chiều rộng tối thiểu ngay cả khi nó không có nội dugn. Tuy nhiên, nếu nội dung nó lớn hơn giá trị tối thiểu thì nó vẫn được mở rộng thoải mái.
Tương tự, một phần tử được áp dụng min-height sẽ không bao giờ nhỏ hơn giá trị được chỉ định, ngay cả khi đặt giá trị thuộc tính height nhỏ hơn.
Ví dụ: Nếu height được đặt thành 200px và min-height được đặt thành 300px, thì chiều cao thực của phần tử sẽ là 300px
HTML:
<div>Chiều cao tối thiểu của thẻ div này là 300px vì thế nó không thể nhỏ hơn cho dù có đặt height = 200px</div>
<p>Còn thể p này có chiều cao tối thiểu là 100px.</p>
CSS:
div {
height: 200px;
min-height: 300px;
background: #003999;
}
p {
min-height: 100px;
background: #eee8aa;
}
Thiết lập khoảng chiều rộng và khoảng chiều cao trong CSS
Thuộc tính min-width và min-height thường được sử dụng kết hợp với thuộc tính max-width và max-height để tạo ra phạm vi chiều rộng và chiều cao cho một phần tử.
Điều này có thể rất hữu ích để tạo ra các bố cục thiết kế linh hoạt
Trong ví dụ sau, chiều rộng tối thiểu của thẻ div sẽ là 300px và nó có thể kéo dài chiều rộng lên đến tối đa 500px.
Trong hướng dẫn tự học CSS này, bạn sẽ tìm hiểu về CSS Box Model. Hiểu làm thế nào các phần tử có thể trình bày trực quan trên trang web.
Trong hướng dẫn tự học CSS này, bạn sẽ tìm hiểu về CSS Box Model. Hiểu làm thế nào các phần tử có thể trình bày trực quan trên trang web.
1. CSS Box Model là gì?
Mỗi phần tử có thể được hiển thị trên một trang web đều được bao quanh bởi một hoặc nhiều hộp hình chữ nhật.
CSS Box Model thường mô tả cách các hộp hình chữ nhật này được thiết lập trên một trang web.
Các hộp này có thể có các thuộc tính khác nhau và có thể tương tác với nhau theo các cách khác nhau, nhưng mỗi hộp đều có:
Content area: Khu vực nội dung hiển thị (Text, Ảnh, Video…)
Padding: Các vùng đệm (Khoảng cách trống giữa nội dung và đường viền)
Border: Đường viền (Đường viền này có hoặc không có độ rộng)
Margin area: Khu vực lề (Khoảng cách giữa border và các phần tử xung quanh)
Sơ đồ sau đây sẽ minh họa cho bạn thấy các thuộc tính:
width
height
padding
border
margin
Đây là tất cả những thứ sẽ xác định một phần tử sẽ chiếm bao nhiêu không gian trên trang web.
Như đã giới thiệu ở trên, Padding là không gian trong suốt giữa nội dung của phần tử và đường viền của nó (hoặc cạnh của hộp, nếu nó không có đường viền).
Trong khi đó, margin là không gian trong suốt xung quanh đường viền, nó giữ khoảng cách từ đường viền đến các phần từ xung quanh khác.
Ngoài ra, nếu một phần tử có màu nền (background), nó sẽ hiển thị cả trên padding (vùng đệm) của nó.
Margin (vùng lề) luôn luôn trong suốt, nó không bị ảnh hưởng bởi màu nền của phần tử, tuy nhiên, nếu có một nền được đặt bên dưới nó thì thì chúng ta sẽ nhìn thấy màu nền đó (ví dụ như màu nền của phần tử cha chẳng hạn).
2. Chiều rộng và Chiều cao thực tế của phần tử trên website
Thông thường khi bạn thiết lập chiều rộng (width) và chiều cao (height) của một phần tử bằng các thuộc tính width và height trong CSS, thực tế bạn chỉ đang thiết lập chiều rộng và chiều cao của vùng nội dung (Content Area) của phần tử đó.
Chiều rộng và chiều cao thực tế của hộp phần tử phụ thuộc vào một số yếu tố khác nữa.
Không gian thực tế mà hộp của một phần tử có thể chiếm trên một trang web được tính như thế này:
Lưu ý: Nếu bạn không hiểu kích thước thật mà phần tử chiếm, thì khi CSS bạn chỉ tính toán kích thước width với height thì sẽ sai lệch ngay.
Cụ thể, bạn sẽ được tìm hiểu về từng thuộc tính CSS này một cách chi tiết trong các bài sau.
Bây giờ chúng ta hãy thử ví dụ sau để hiểu CSS Box Model thực sự hoạt động như thế nào:
Trong HTML:
<div>Phần tử DIV này sử dụng để minh họa CSS Box Model trong CSS. Kích thước thực tế của phần tử sẽ bao gồm cả các kích thước: Phần nội dung, Phần đệm, Phần đường viền và Phần lề.</div>
<div>Hãy sử dụng Ctrl + Shift + I và chọn chỉ vào 2 DIV này để thấy không gian thực sự mà phần tử đã chiếm lấy.</div>
Note: Thuộc tính float: left đơn giản là sử dụng để dồn các phần tử sang bên trái nếu còn đủ không gian.
Khi chạy trên trình duyệt chúng ta nhận được kết quả như thế này:
Sau khi chúng ta nhấn Ctrl + Shift + I và chọn chỉ vào phần tử thì sẽ thấy như thế này:
Kích thước trình duyệt hiển thị (phần nhìn thấy rõ ràng) là 250×250 là:
Chiều rộng 200px + Phần đệm trái 15px + Phần đệm phải 15px + Đường viền trái 10px + Đường viền phải 10px = 250px
Chiều cao 200px + Phần đệm trên 15px + Phần đệm dưới 15px + Đường viền trên 10px + Đường viền dưới 10px = 250px
Tuy nhiên, thực sự không gian mà phần tử này chiếm đang là 290 x 290 px (bao gồm cả phần phần màu cam nhạt ngoài cùng)
Như vậy, bài hướng dẫn tự học CSS này mình đã giúp bạn hiểu về CSS Box Model là gì, kích thước thật sự của phần tử khi hiển thị trên website.
Hãy thử thay đổi các thuộc tính để thực sự hiểu cách nó hoạt động, tương tác bạn nhé. Nắm rõ CSS Box Model thực sự rất quan trọng khi HỌC LẬP TRÌNH WEB đấy.
Trong bài hướng dẫn tự học CSS này, bạn sẽ tìm hiểu toàn tập cách CSS bảng đẹp, CSS table một cách dễ hiểu nhất.
Trong bài hướng dẫn tự học CSS này, bạn sẽ tìm hiểu toàn tập cách CSS bảng đẹp, CSS table một cách dễ hiểu nhất.
Vì sao cần tạo kiểu cho bảng với CSS
Trong lập trình web, bạn có thể sẽ cần tạo rất nhiều bảng để lưu trữ, hiển thị thông tin một cách khoa học.
Các bảng (table) thường được sử dụng để hiển thị dữ liệu, chẳng hạn như báo cáo tài chính, thống kê, kế toán…
Nhưng khi bạn tạo một bảng HTML mà không có được CSS hoặc thêm thuộc tính nào, trình duyệt sẽ hiển thị chúng mà không có bất kỳ đường viền nào.
Như thế trông sẽ rất tệ.
Thế nên bạn cần phải thực hiện CSS cho bảng để mang lại trả nghiệm tốt hơn.
CSS cung cấp một số thuộc tính cho phép bạn kiểm soát bố cục và cách trình bày các thành phần của bảng. Trong phần sau, bạn sẽ thấy cách sử dụng CSS để tạo các bảng một cách thanh lịch và nhất quán.
CSS Table #1: Thêm đường viền cho bảng
Sử dụng thuộc tính border của CSS là cách tốt nhất để xác định đường viền cho các bảng.
Ví dụ sau sẽ thiết lập đường viền màu đen cho các phần tử <table>, <th> và <td>.
Nếu bạn chưa biết thì:
<table></table> là cặp thẻ khai báo một bảng
<tr></tr> là để tạo một hàng trong bảng <table>
<th></th> là cặp thẻ để xác định các tiêu đề của từng cột
<td><td> là cặp thẻ xác định nội dung của cùng một hàng (qua từng cột)
Bây giờ, mình thiết lập đường viền cho bảng bằng CSS như sau:
table, th, td {
border: 1px solid black;
}
1px là độ rộng của đường viền
solid (nét liền), dashed (gạch ngang), dotted (kiểm chấm) là kiểu nét của đường viền
black (có thể chọn màu tùy ý) là màu của đường viền
Kết quả được như hình:
Vì theo mặc định, trình duyệt vẽ một đường viền xung quanh bảng, cũng như xung quanh tất cả các ô, với một khoảng trống ở giữa, dẫn đến đường viền kép.
Để thoát khỏi vấn đề đường viền kép này, bạn có thể chỉ cần thu gọn các đường viền ô liền kề và tạo các đường viền đơn.
Nó gọi là Collapsing Border
Collapsing Border
Có hai mô hình riêng biệt để thiết lập đường viền trên các ô của bảng trong CSS:
separate: Tách biệt
collapse: Thu gọn
Trong mô hình separate border, nó là mặc định, mỗi ô của bảng có các viền riêng biệt (Vì thế bạn thấy đường viền kép)
Trong khi đó ở mô hình collapsed border, các ô của bảng liền kề có chung một viền.
Bạn có thể thiết lập mô hình viền cho bảng HTML bằng cách sử dụng thuộc tính border-collapse của CSS.
Đoạn code CSS sau đây sẽ thu gọn các viền ô của bảng (thành viền đơn) và áp dụng một viền đen 1px.
Lưu ý: Bạn cũng có thể xóa khoảng trắng giữa các viền của ô bảng thông qua đặt giá trị của thuộc tính border-spacing CSS thành 0. Tuy nhiên, nó chỉ xóa khoảng trắng nhưng không hợp nhất các đường viền như khi bạn đặt thu gọn đường viền thành thu gọn.
Bạn cũng có thể điều chỉnh khoảng cách giữa các viền của các ô bằng cách sử dụng thuộc tính border-spacing trong CSS, nếu các viền của bảng của bạn đang sử dụng là mô hình separate border (mặc định đó).
Các quy tắc CSS sau áp dụng khoảng cách 10px giữa tất cả các viền trong một bảng:
Theo mặc định, một bảng sẽ hiển thị chỉ vừa đủ rộng và đủ cao để chứa tất cả nội dung của nó.
Tuy nhiên, bạn cũng có thể đặt chiều rộng và chiều cao của bảng cũng như các ô của bảng một cách rõ ràng bằng cách sử dụng thuộc tính width và height của CSS.
Các quy tắc CSS trong ví dụ sau sẽ thiết lập chiều rộng của bảng thành 100% và chiều cao của các ô tiêu đề bảng thành 40px.
Khi chạy trên trình duyệt, kết quả chúng ta dùng được là:
CSS Table #4: Kiểm soát bố cục của bảng
Một bảng tự động mở rộng và teo lại để chứa vừa dữ liệu chứa bên trong nó (Đây là hành vi mặc định)
Khi dữ liệu điền vào bên trong bảng, nó tiếp tục mở rộng miễn là còn có không gian. Tuy nhiên, đôi khi, cần phải thiết lập chiều rộng cố định cho bảng để quản lý bố cục thống nhất.
Bạn có thể làm điều này với sự trợ giúp của thuộc tính table-layout trong CSS.
Thuộc tính này xác định thuật toán được sử dụng để bố trí các ô, hàng và cột của bảng. Thuộc tính này có một trong hai giá trị:
auto: Sử dụng một thuật toán bố trí bảng tự động. Với thuật toán này, độ rộng của bảng và các ô của nó được điều chỉnh để phù hợp với nội dung. Đây là giá trị mặc định.
fixed: Sử dụng thuật toán bố trí bảng cố định. Với thuật toán này, bố cục ngang của bảng không phụ thuộc vào nội dung của các ô. Nó chỉ phụ thuộc vào chiều rộng của bảng, chiều rộng của các cột và đường viền hoặc khoảng cách ô. Bố trí bảng này trình duyệt sẽ thực thi nhanh hơn bảng auto.
Các quy tắc CSS trong ví dụ sau xác định rằng bảng HTML được trình bày bằng thuật toán bố cục fixed và có chiều rộng cố định 300 pixel.
Mẹo: Bạn có thể tối ưu hóa hiệu suất kết xuất bảng (trong trình duyệt) bằng cách chỉ định giá trị fixed cho thuộc tính table-layout. Giá trị fixed của thuộc tính này làm cho bảng được hiển thị một hàng tại một thời điểm, cung cấp cho người dùng thông tin với tốc độ nhanh hơn.
Note: Nếu không có giá trị fixed của thuộc tính table-layout trên các bảng lớn, người dùng sẽ không thấy bất kỳ phần nào của bảng cho đến khi trình duyệt render xong toàn bộ bảng.
CSS Table #5: Căn chỉnh văn bản bên trong các ô của bảng
Bạn có thể căn chỉnh nội dung văn bản bên trong các ô của bảng theo chiều ngang hoặc chiều dọc.
Căn chỉnh nội dung theo chiều ngang của ô trong bảng
Để căn chỉnh văn bản theo chiều ngang bên trong các ô của bảng, bạn có thể sử dụng thuộc tính text-align giống như cách bạn sử dụng với các phần tử khác.
Lưu ý: Văn bản bên trong các phần tử <td> được căn trái theo mặc định, trong khi văn bản bên trong các phần tử <th> được căn giữa và được hiển thị bằng phông chữ đậm theo mặc định.
Sắp xếp nội dung theo chiều dọc của ô trong bảng
Tương tự, bạn có thể căn chỉnh nội dung theo chiều dọc bên trong các phần tử <th> và <td> thành trên cùng (top), dưới cùng (bottom) hoặc giữa (center) bằng cách sử dụng thuộc tính vertical-align trong CSS.
Căn dọc mặc định là giữa.
Các quy tắc CSS sau sẽ căn chỉnh văn bản theo chiều dọc, xuống dưới cùng bên trong các phần tử <th>.
Mẹo: Để căn chỉnh chiều ngang của văn bản chú thích của bảng (ví dụ: căn trái hoặc phải), bạn chỉ cần sử dụng thuộc tính text-align trong CSS, giống như cách bạn làm với văn bản thông thường là được.
CSS Table #7: Xử lý các ô trống trong bảng
Trong các bảng sử dụng mô hình separate border, theo mặc định, bạn cũng có thể kiểm soát việc render các ô không có nội dung hiển thị bằng cách sử dụng thuộc tính empty-cells trong CSS.
Thuộc tính này chấp nhận giá trị show hoặc hide.
Giá trị mặc định là show, hiển thị các ô trống như các ô bình thường.
Nhưng nếu giá trị hide được chỉ định, không có border hoặc background nào được vẽ xung quanh các ô trống.
Hãy thử một ví dụ để hiểu cách nó thực sự hoạt động:
Ta có HTML:
<h2>BẢNG VỚI CÁC Ô TRỐNG</h2>
<table class="empty-show">
<tr>
<th>Họ và tên</th>
<td>Nguyễn Linh Trang</td>
</tr>
<tr>
<th>Email</th>
<td></td>
</tr>
</table>
<br>
<h2>BẢNG VỚI CÁC Ô TRỐNG BỊ ẨN</h2>
<table class="empty-hide">
<tr>
<th>Họ và tên</th>
<td>Vũ Kim Thoa</td>
</tr>
<tr>
<th>Email</th>
<td></td>
</tr>
</table>
Mẹo: Đặt giá trị ( ) bên trong một ô của bảng làm cho nó không bị trống. Do đó, ngay cả khi ô đó nhìn thì trống rỗng, giá trị hide sẽ không ẩn đường viền và nền.
CSS Table #8: Tạo bảng sọc như ngựa vằn
Bạn có thể thiết lập màu nền khác nhau cho các hàng xen kẽ là một kỹ thuật phổ biến để cải thiện khả năng đọc của các bảng có lượng dữ liệu lớn.
Kỹ thuật này thường được gọi là: zebra-striping
Bạn chỉ có thể đạt được hiệu ứng này bằng cách sử dụng pesudo-class Selector trong CSS là :nth-child().
Lưu ý: Các phần tử pesudo-class nth-child() dựa trên vị trí của chúng trong một nhóm anh chị em. Nó có thể lấy một số, một từ khóa chẵn (even) hoặc lẻ (odd) hoặc một biểu thức có dạng xn + y trong đó x và y là các số nguyên (ví dụ: 1n, 2n, 2n + 1, …) làm đối số.
CSS Table #9: Tạo bảng Responsive
Theo mặc định thì bảng không responsive (khả năng tương thích với các loại kích thước màn hình).
Tuy nhiên, để hỗ trợ các thiết bị di động, bạn có thể thêm khả năng responsive cho các bảng của mình bằng cách cho phép cuộn ngang trên màn hình nhỏ.
Để làm điều này, chỉ cần bọc bảng của bạn bằng một phần tử <div> và áp dụng kiểu overflow-x: auto; như hình dưới đây:
HTML:
<div class="responsive-table">
<table>
<thead>
<tr>
<th>ID</th>
<th>Họ và tên đệm</th>
<th>Tên</th>
<th>Email</th>
<th>Số điện thoại</th>
<th>Địa chỉ hiện tại</th>
<th>Quê quán</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Nguyễn Minh</td>
<td>Đức</td>
<td>nguyenminhduc@mail.com</td>
<td>0989111222</td>
<td>Tầng 3, 25T2, Nguyễn Thị Thập, Cầu Giấy, Hà Nội</td>
<td>Thanh Hóa</td>
</tr>
<tr>
<td>2</td>
<td>Vũ Kim</td>
<td>Thoa</td>
<td>vukimthoa@mail.com</td>
<td>0989222333</td>
<td>Tầng 3, 25T2, Nguyễn Thị Thập, Cầu Giấy, Hà Nội</td>
<td>Hà Nội</td>
</tr>
<tr>
<td>3</td>
<td>Nguyễn Linh</td>
<td>Trang</td>
<td>nguyenlinhtrang@mail.com</td>
<td>0989333444</td>
<td>Tầng 3, 25T2, Nguyễn Thị Thập, Cầu Giấy, Hà Nội</td>
<td>Tuyên Quang</td>
</tr>
<tr>
<td>4</td>
<td>Vi Đại</td>
<td>Doanh</td>
<td>vidaidoanh@mail.com</td>
<td>0989444555</td>
<td>Tầng 3, 25T2, Nguyễn Thị Thập, Cầu Giấy, Hà Nội</td>
<td>Tuyên Quang</td>
</tr>
</tbody>
</table>
</div>
Như vậy, trong bài hướng dẫn tự học CSS này mình đã hướng dẫn bạn cách CSS bảng, cách CSS bảng đẹp thông qua các thuộc tính của CSS.
Hi vọng bài viết có ích cho quá trình học CSS, cũng như học lập trình web của bạn.
Chú ý: Nếu bạn đang tìm kiếm khóa học Lập trình Web bài bản để trở thành lập trình viên phát triển web thực thụ thì hãy xem qua ngay KHÓA HỌC LẬP TRÌNH FULL STACK tại NIIT – ICT Hà Nội nhé.
Danh sách không theo thứ tự (Unordered List) – Một danh sách, trong đó mọi mục trong danh sách được đánh dấu bằng dấu chấm đầu dòng.
Danh sách theo thứ tự (Ordered List) – Một danh sách, trong đó mỗi mục danh sách được đánh dấu bằng số.
Danh sách định nghĩa (Definition List) – Một danh sách các mục, với một mô tả của từng mục.
Tạo kiểu cho Danh sách (List) bằng CSS
CSS cung cấp một số thuộc tính phổ biến để tạo kiểu và định dạng các danh sách có thứ tự và không thứ tự.
Các thuộc tính danh sách CSS này thường cho phép bạn:
Kiểm soát hình dạng hoặc sự xuất hiện của điểm đánh dấu.
Chỉ định hình ảnh cho điểm đánh dấu thay vì dấu chấm đầu dòng hoặc số.
Thiết lập khoảng cách giữa phần đánh dấu và phần văn bản trong danh sách.
Chỉ định xem điểm đánh dấu sẽ xuất hiện bên trong hoặc bên ngoài hộp chứa các mục danh sách.
Trong phần sau chúng ta sẽ thảo luận về các thuộc tính có thể được sử dụng để tạo kiểu cho danh sách HTML.
#1. Thay đổi kiểu đánh dấu đầu dòng của list
Theo mặc định, các mục trong danh sách được sắp xếp được đánh số bằng chữ số Ả Rập (1, 2, 3, 5, v.v.) -> Kiểu ordered list
Trong khi trong danh sách không có thứ tự (Kiểu Unordered list), các mục được đánh dấu bằng chấm tròn (•).
Tuy nhiên, bạn có thể thay đổi loại điểm đánh dấu danh sách mặc định này thành bất kỳ loại nào khác, chẳng hạn như chữ số La Mã, chữ cái la tinh, hình tròn, hình vuông, v.v. bằng cách sử dụng thuộc tính: list-style-type
Hãy thử ví dụ sau để hiểu cách thức hoạt động của thuộc tính này:
HTML:
<h2>Danh sách không có thứ tự</h2>
<ul>
<li>Học CSS</li>
<li>Học SASS</li>
<li>Học Bootstrap</li>
</ul>
<h2>Danh sách có thứ tự</h2>
<ol>
<li>Học CSS</li>
<li>Học SASS</li>
<li>Học Bootstrap</li>
</ol>
CSS:
ul {
list-style-type: square;
}
ol {
list-style-type: upper-roman;
}
#2. Thay đổi vị trí của điểm đánh dấu danh sách
Theo mặc định, các điểm đánh dấu của từng mục danh sách được đặt bên ngoài (outside) hộp hiển thị của chúng.
Tuy nhiên, bạn cũng có thể định vị các điểm đánh dấu hoặc dấu đầu dòng bên trong các hộp hiển thị của mục danh sách bằng cách sử dụng thuộc tính list-style-position cùng với giá trị inside.
Trong trường hợp này, các danh sách và đánh dấu sẽ cùng nằm trong hộp hiển thị của nó:
HTML:
<h2>Thay đổi điểm đánh dấu vào trong</h2>
<ol class="trong">
<li>Học CSS</li>
<li>Học SASS</li>
<li>Học Bootstrap</li>
</ol>
<h2>Thay đổi điểm đánh dấu ra ngoài</h2>
<ol class="ngoai">
<li>Học CSS</li>
<li>Học SASS</li>
<li>Học Bootstrap</li>
</ol>
CSS:
ol.trong li {
list-style-position: inside;
}
ol.ngoai li {
list-style-position: outside;
}
Bạn thử chạy ví dụ này trên trình duyệt xem. Kết quả như thế nào?
#3. Sử dụng hình ảnh để làm điểm đánh dấu
Bạn cũng có thể đặt hình ảnh để làm điểm đánh dấu danh sách bằng cách thông qua thuộc tính: list-style-image
Quy tắc CSS trong ví dụ sau sẽ chỉ định hình ảnh PNG là ‘icon-tick.png’ làm điểm đánh dấu danh sách cho tất cả các mục trong danh sách không theo thứ tự.
Note: Bạn có thể sử dụng hình ảnh bất kỳ, đặt trong thư mục cùng cấp với file HTM. Ở đây, mình tạo một thư mục images cùng cấp với file HTML và lưu / đặt tên là icon-tick.png
Hãy dùng thử và xem nó hoạt động như thế nào:
HTML:
<h2>Danh sách sử dụng điểm đánh dấu là ảnh</h2>
<ul>
<li>CSS rất dễ học</li>
<li>CSS rất thú vị</li>
<li>CSS tất cần thiết</li>
</ul>
CSS như sau:
ul li {
list-style-image: url("images/icon-tick.png");
}
Đôi khi, thuộc tính list-style-image có thể không tạo ra két quả như dự kiến. Ngoài ra, bạn có thể sử dụng giải pháp sau đây để kiểm soát tốt hơn việc định vị các điểm đánh dấu hình ảnh.
Để giải quyết vấn đề, bạn cũng có thể đặt hình ảnh đánh dấu thông qua thuộc tính CSS background-image.
Đầu tiên, thiết lập list-style-type không có dấu đánh dấu đầu dòng. Sau đó, xác định một hình nền no-repeat cho thành phần trong danh sách.
Ví dụ sau hiển thị các điểm đánh dấu hình ảnh bằng nhau trong tất cả các trình duyệt:
ul {
list-style-type: none;
}
ul li {
background-image: url("images/icon-tick.png");
background-position: 0px 5px;
background-repeat: no-repeat;
padding-left: 20px;
}
Bạn lưu ý, có thuộc tính background-position: 0px 5px; có thể bạn chưa học.
Nhưng bạn có thể hiểu đơn giản là thuộc tính này xác định lại ví trí của điểm đánh dấu như sau:
Cách cạnh trái hộp hiển thị của nó là 0px
Cách cạnh trên hộp hiển thị của nó là 5px
#4. Cách viết tắt thuộc tính css cho danh sách
Như bạn đã biết cách viết riêng lẻ 3 thuộc tính định dạng cho danh sách ở trên.
Ngoài cách viết riêng lẻ để tăng khả năng đọc, CSS cung cấp cho chúng ta cách viết tắt cực kỳ ngắn gọn (Các lập trình viên web chuyên nghiệp rất thích điều này)
Ví dụ, thay vì phải viết dài dòng như thế này:
ul li {
list-style-type: square;
list-style-position: inside;
list-style-image: url("images/icon-tick.png");
}
Chúng ta có thể viết tắt trên một dùng như thế này:
ul li {
list-style: square inside url("images/icon-tick.png");
}
Dĩ nhiên, ở đây có một điểm có thể hơi thừa thãi.
Một khi đã sử dụng kiểu hình ảnh để thay thế cho kiểu đánh dấu mặc định thì chúng ta có thể bỏ cái kia đi, ví dụ:
ul li {
list-style: inside url("images/icon-tick.png");
}
Hoặc như thế này:
ul li {
list-style: square inside;
}
Tuy nhiên, để cả 2 giá trị cũng không sao. CSS sẽ ưu tiên giá trị kiểu hình ảnh (được ghi sau).
Note: Đây cũng là cách đề phòng trường hợp trình duyệt không load được ảnh thì vẫn sẽ hiển thị giá trị square.
Lưu ý: Khi sử dụng cách viết tắt này, thứ tự của các giá trị là: list-style-type | list-style-position | list-style-image. Sẽ không có vấn đề gì nếu một trong các giá trị trên bị thiếu miễn là các giá trị còn lại theo thứ tự được chỉ định.
Ví dụ tạo Menu điều hướng sử dụng list
Danh sách HTML thường được sử dụng để tạo thanh điều hướng ngang hoặc menu thường xuất hiện ở đầu trang web.
Nhưng vì các mục danh sách là các thành phần block (khối), vì vậy để hiển thị chúng theo kiểu inline (nội tuyến), chúng ta cần sử dụng thuộc của CSS là display.
Hãy thử một ví dụ để xem nó thực sự hoạt động như thế nào:
body{
font-size: 14px;
font-family: Arial,sans-serif;
}
ul {
padding: 0;
list-style: none;
background: #f2f2f2;
}
ul li {
display: inline-block;
text-transform: uppercase;
}
ul li a {
display: block;
padding: 10px 25px;
color: #333;
text-decoration: none;
}
ul li a:hover {
color: #fff;
background: #003999;
}
Bạn thử làm lại ví dụ trên và chạy nó trên trình duyệt xem. (Nhớ thay đổi, xóa các thuộc tính để xem chúng thay đổi, phản ứng như thế nào bạn nhé)
Như vậy, qua bài viết này, mình đã giúp bạn học cách định dạng, viết css cho các danh sách, cũng như cách đơn giản để tạo ra một menu với các thẻ ul, li.
Trong bài hướng dẫn tự học CSS này, bạn sẽ học cách viết CSS để tạo kiểu cho các trạng thái khác nhau của một đường link (liên kết).
Trong bài hướng dẫn tự học CSS này, bạn sẽ học cách viết CSS để tạo kiểu cho các trạng thái khác nhau của một đường link (liên kết).
Tạo kiểu các link với CSS
Link (liên kết) hoặc siêu liên kết là một phần thiết yếu của một trang web.
Nó cho phép khách truy cập điều hướng qua lại các trang trên (và ngoài) web. Do đó, tạo kiểu cho các liên kết đúng cách là một khía cạnh quan trọng của việc xây dựng một trang web thân thiện với người dùng.
Một liên kết có bốn trạng thái khác nhau:
link
visited
active
hover
Bốn trạng thái của một liên kết có thể được tạo kiểu khác nhau thông qua việc sử dụng các Selector sau đây.
a:link – Dùng để tạo kiểu cho liên kết thông thường, chưa được click
a:visited – Dùng để tạo kiểu cho liên kết đã được người dùng truy cập
a:active – Dùng để tạo kiểu cho các liên kết khi chúng được nhấp vào.
a:hover – Dùng để tạo kiểu cho các liên kết khi di chuột qua
Bạn có thể chỉ định bất kỳ thuộc tính CSS nào bạn muốn, ví dụ: Màu sắc, phông chữ, nền, đường viền, v.v. cho mỗi bộ chọn này để tùy chỉnh kiểu liên kết, giống như bạn làm với văn bản thông thường.
Đây là một ví dụ
HTML:
<a href="https://niithanoi.edu.vn">Học Lập trình</a>
CSS:
a:link { /* Link chưa được truy cập */
color: #ff0000;
text-decoration: none;
border-bottom: 1px solid;
}
a:visited { /* Link đã truy cập */
color: #ff00ff;
}
a:hover { /* Di chuyển qua link */
color: #00ff00;
border-bottom: none;
}
a:active { /* Link được kích hoạt */
color: #00ffff;
}
Thứ tự mà bạn đang đặt kiểu cho các trạng thái liên kết khác nhau rất quan trọng.
Bởi vì những gì được viết ở cuối cùng được ưu tiên hơn các kiểu được định nghĩa trước đó.
Lưu ý: Nói chung, thứ tự của chúng nên như sau: link, :visited, :hover, :active, :focus để có thể hoạt động đúng
Viết CSS tạo kiểu cho các link
Trong tất cả các trình duyệt web chính như Chrome, Firefox, Safari, v.v., các liên kết trên các trang web đều có gạch chân và sử dụng màu liên kết mặc định của trình duyệt, nếu bạn không đặt kiểu riêng cho chúng.
Theo mặc định, các liên kết văn bản sẽ xuất hiện như sau trong hầu hết các trình duyệt:
Nếu bạn không thích gạch chân mặc định trên các liên kết, bạn chỉ cần sử dụng thuộc tính tex-decoration trong CSS để loại bỏ nó.
Note: Thực tế thì các trang web hiện đại thường thể hiện các đường link bằng màu sắc, không có gạch chân, khi hover thì sẽ có màu sắc khác.
Ngoài ra, bạn có thể áp dụng kiểu dáng khác trên các liên kết như background color, bottom boder, bold, v.v. để làm cho nó nổi bật hơn văn bản bình thường tốt hơn một chút.
Ví dụ sau đây cho thấy cách xóa hoặc đặt gạch chân cho các trạng thái khác nhau của liên kết.
Trong bài hướng dẫn tự học CSS3 này, bạn sẽ học cách tạo kiểu văn bản trên các trang web của mình bằng CSS / CSS3, cách CSS Text thông qua các thuộc tính được cung cấp.
Trong bài hướng dẫn tự học CSS3 này, bạn sẽ học cách tạo kiểu văn bản trên các trang web của mình bằng CSS / CSS3, cách CSS Text thông qua các thuộc tính được cung cấp.
Định dạng text với CSS
CSS cung cấp một số thuộc tính cho phép bạn định dạng các kiểu văn bản khác nhau như màu sắc, căn chỉnh, khoảng cách, gạch chân, chuyển đổi, v.v … rất dễ dàng và hiệu quả.
Các thuộc tính định dạng văn bản thường được sử dụng là:
text-align
text-decoration
text-transform
text-indent
line-height
letter-spacing
word-spacing
… Và còn nhiều nữa
Các thuộc tính này cung cấp cho bạn quyền kiểm soát chính xác về hiển thị trực quan trực quan của các ký tự, từ, khoảng trắng, v.v. Giúp cho quá trình lập trình web / lập trình front end được thân thiên hơn, tăng khả năng đọc và tính độc đáo.
Hãy xem cách thiết lập các thuộc tính văn bản này cho một phần tử chi tiết hơn ở phần tiếp theo nhé.
#1. Định dạng màu sắc chữ trong CSS
Màu của văn bản được xác định bởi thuộc tính color trong CSS.
Cú pháp ở trong ví dụ sau sẽ định dạng màu văn bản cho toàn bộ phần body (Phần hiển thị trang web)
body {
color: #333;
}
Mặc dù, thuộc tính color có vẻ như là một phần của văn bản CSS, nhưng thực ra nó là một thuộc tính độc lập trong CSS.
#2. Căn chỉnh văn bản trong CSS
Thuộc tính text-aglin được sử dụng để đặt căn chỉnh chiều ngang của văn bản.
Văn bản có thể được căn chỉnh theo bốn cách: left, right, center hoặc justify (Căn đều lề trái và phải).
Chúng ta hãy xem một ví dụ để hiểu cơ bản hoạt động của thuộc tính text-align này.
HTML:
<h1>Đây là một tiêu đề được căn trái</h1>
<p>Đây là một đoạn văn bản được căn đều hai bên bằng cách thiết lập giá trị justify cho thuộc tính text-align. Bạn sẽ thấy nó được căn đều hai bên như ở trong Word vậy.</p>
CSS:
h1 {
text-align: center;
}
p {
text-align: justify;
}
Lưu ý: Khi căn chỉnh văn bản được đặt jusfity, mỗi dòng được kéo dài sao cho mỗi dòng có chiều rộng bằng nhau (ngoại trừ dòng cuối cùng). Sự liên kết này thường được sử dụng trong các ấn phẩm như các tạp chí và báo chí.
#3. Gạch chân văn bản trong CSS
Thuộc tính text-decoration trong CSS được sử dụng để làm điều này.
Thuộc tính này thường chấp nhận một trong các giá trị sau:
underline
overline
line-through
vànone
Nhưng lưu ý, bạn nên tránh gạch chân văn bản nếu nó không phải là một đường link, vì nó có thể gây nhầm lẫn cho khách truy cập.
HTML:
<h1>Đây là một tiêu đề có gạch trên đầu</h1>
<h2>Đây là một tiêu đề bị gạch ở giữa</h2>
<h3>Đây là một tiêu đề có gạch chân</h3>
Xóa phần gạch chân mặc định khỏi các đường link, thẻ Anchor
Theo mặc định, các đường link (thẻ <a>) trong HTML sẽ có gạch chân. Nhưng thông thường khi lập trình web thực tế, các đường link trong trang web hiện đại được thể hiện bằng màu sắc.
Do đó, người ta thường muốn bỏ gạch chân đi khi CSS cho các đường link.
Trong trường hợp này, cách phổ biến nhất là sử dụng thuộc tính text-decoration.
Chúng ta hãy xem ví dụ sau để hiểu về cơ bản nó hoạt động như thế nào:
HTML:
<a href="#">Đây là một liên kết</a>
CSS:
a {
text-decoration: none;
border-bottom: 1px dotted;
}
Lưu ý: Khi bạn tạo một liên kết HTML, các trình duyệt được tạo trong biểu định kiểu sẽ tự động gạch chân nó và áp dụng màu xanh lam (khi di chuột / hover qua thì con trỏ sẽ thay đổi thành biểu tượng bàn tay) để người đọc có thể thấy rõ văn bản nào có thể click được.
#4. Thuộc tính text-transform trong CSS
Thuộc tính text-transform trong CSS được sử dụng để chuyển đổi một văn bản thành:
CHỮ IN HOA
Viết Hoa Đầu Mỗi Từ
chữ in thường
Thông thường, văn bản được tạo sẽ giữ nguyên như cách chúng ta nhập vào trang web. Nhưng nếu bạn cần chuyển đổi nó thì bạn có thể sử dụng như sau mà không cần thay đổi nội dung văn bản gốc:
HTML:
<h1>Đây là tiêu đề 1</h1>
<h2>Đây là tiêu đề 2</h2>
<h3>Đây là tiêu đề 3</h3>
Đoạn css sau sẽ thụt dòng đầu tiên của đoạn văn bằng 100 px.
HTML:
<p>Đây là một đoạn văn bản sẽ bị thụt lề dòng đầu tiên. Bởi vì nó đã được áp dụng thuộc tính text-indent với giá trị là 100px. Hãy có kéo / thu nhỏ trình duyệt của bạn để thấy kết quả rõ hơn</p>
CSS:
p {
text-indent: 100px;
}
Lưu ý: Việc văn bản được thụt lề từ bên trái hay bên phải tùy thuộc vào hướng văn bản bên trong phần tử. Trong đó, hướng của văn bản được xác định bởi thuộc tính direction trong CSS.
#6. Chỉ định khoảng cách giữa các ký tự trong CSS
Thuộc tính letter-spacing trong CSS được sử dụng để thiết lập khoảng cách ở giữa các ký tự của văn bản.
Thuộc tính này có thể lấy giá trị độ dài tính bằng px, em, rem, v.v. Nó cũng có thể chấp nhận giá trị âm.
Khi thiết lập khoảng cách ký tự, giá trị độ dài biểu thị khoảng cách giữa các từ sẽ bằng: Khoảng cách mặc định + Khoảng cách tăng thêm.
Hãy xem ví dụ sau để hiểu cách thức hoạt động của nó:
HTML:
<h1>Đây là một tiêu đề</h1>
<p>Đây là một đoạn văn bản</p>
CSS:
h1 {
letter-spacing: -3px;
}
p {
letter-spacing: 10px;
}
#7. Chỉ định khoảng cách giữa các từ trong CSS
Thuộc tính word-spacing trong CSS được sử dụng để chỉ định khoảng cách bổ sung giữa các từ.
Thuộc tính này có thể chấp nhận giá trị độ dài tính bằng px, em, v.v … Giá trị âm cũng được cho phép.
Hãy thử ví dụ sau để hiểu cách thức hoạt động của thuộc tính này:
HTML:
<p class="one">Đây là một đoạn văn bản bình thường.</p>
<hr />
<p class="two">Đây là một đoạn văn bản được căn đều hai bên bên trong một khối có chiều ngang là 150px. Khoảng cách giữa các từ bây giờ được thiết lập là 20px.</p>
Lưu ý: Khoảng cách từ có thể bị ảnh hưởng bởi text-align: justify;
#8. Chỉ định khoảng cách giữa các dòng văn bản trong CSS
Thuộc tính line-hight trong CSS được sử dụng để đặt chiều cao của dòng văn bản.
Nó cũng được gọi là thuộc tính để thiết lập khoảng cách giữa các dòng văn bản.
Giá trị của thuộc tính này có thể là một số, tỷ lệ phần trăm (%) hoặc độ dài tính bằng px, em, rem, v.v.
HTML:
<p>Đây là một đoạn văn bản</p>
<div>Đây là một đoạn văn bản được đặt trong khối div có chiều ngang là 200px. Các dòng văn bản cách nhau gấp 2 lần khoảng cách mặc định (200%)</div>
CSS:
p {
line-height: 1.2;
border: 1px solid #00ff00;
}
div {
line-height: 200%;
width: 200px;
border: 1px solid #ff0000;
}
Lưu ý: Không được phép sử dụng các giá trị âm cho thuộc tính chiều cao dòng.
Nếu giá trị của thuộc tính line-height lớn hơn giá trị của cỡ chữ cho một phần tử, thì sự khác biệt này (được gọi là ‘leading’) bị cắt làm đôi (được gọi là ‘half-leading’) và được phân bổ đều trên top và bottom của in-line box. Hãy xem một ví dụ:
HTML:
<h1>Thay đổi giá trị để thấy sự thay đổi</h1>
<p>Thuộc tính <code>line-height</code> thiết lập khoảng cách giữa các dòng văn bản.<br> Chiều cao dòng của đoạn văn bản này sử dụng giá trị px.</p>
CSS:
p {
font-size: 14px;
line-height: 20px;
background-color: #f0e68c;
}
Ngoài ra, trong quá trình CSS cho văn bản thường hay gặp lỗi tràn văn bản (text overflow). Bạn tham khảo cách xử lý trên W3School nhé.
Chúc mừng bạn đã biết khá rõ về cách CSS Text
Ở trên đây hầu như các thuộc tính CSS Text hay gặp nhất, những tình huống cụ thể thì bạn có thể Google thêm nhé.
Trong bài hướng dẫn tự học CSS / CSS3 này, bạn sẽ được tìm hiểu thuộc tính font (kiểu chữ, phông chữ) trong CSS.
Trong bài hướng dẫn tự học CSS / CSS3 này, bạn sẽ được tìm hiểu thuộc tính font (kiểu chữ, phông chữ) trong CSS.
Tạo phông chữ bằng CSS
Chọn phông chữ (font) và kiểu dáng phù hợp là rất quan trọng cho khả năng đọc văn bản trên một trang.
CSS cung cấp một số thuộc tính để tạo kiểu cho phông chữ của văn bản, bao gồm thay đổi đậm, nhạt, kích thước, biến thể, v.v.
Các thuộc tính phông chữ là: họ phông chữ, kiểu phông chữ, trọng lượng phông chữ, cỡ chữ và biến thể phông chữ.
Các thuộc tính của font trong CSS là:
font-family
font-style
font-weight
font-size
font-variant
Cụ thể từng thuộc tính có tác dụng như thế nào thì chúng ta cùng chuyển sang phần tiếp theo.
1. Thuộc tính font-family trong CSS
Thuộc tính font-family được sử dụng để chỉ định phông chữ được sử dụng để hiển thị văn bản.
Thuộc tính này có thể chứa nhiều loại font (được phân tác bằng dấu phảy) để dự phòng nếu font đó không có trên hệ thống.
body {
font-family: Arial, Helvetica, 'Open Sans', Calibri;
}
Do đó, nếu phông chữ đầu tiên không có sẵn trên hệ thống của người dùng, trình duyệt sẽ cố gắng sử dụng tên thứ hai, … và cứ thế v.v.
Do đó, hãy liệt kê phông chữ chính mà bạn muốn trước, sau đó chọn một số font dự phòng nếu font đầu tiên không có sẵn.
Ngoài ra, bạn nên kết thúc danh sách với một họ phông chữ chung gồm năm loại sau:
serif
sans-serif
monospace
cursive
và fantasy.
Một tuyên bố font-family điển hình sẽ có thể trông như thế này:
body {
font-family: Arial, Helvetica, sans-serif;
}
Lưu ý: Nếu tên của họ phông chữ chứa nhiều hơn một từ, thì nó phải được đặt bên trong dấu ngoặc kép, như ‘Open Sans’, ‘Times New Roman’, ‘Courier New’, ‘Segoe UI’, v.v.
Các họ phông chữ phổ biến nhất được sử dụng trong thiết kế web là serif và sans-serif, vì chúng phù hợp hơn để đọc trên trình duyệt.
Mặc dù phông chữ monospace thường được sử dụng để hiển thị code, bởi vì trong kiểu chữ này, mỗi chữ cái chiếm cùng một không gian trông giống như văn bản đánh máy.
Các phông chữ cursive trông giống như chữ viết hoặc chữ viết tay.
Phông chữ fantasy đại diện cho phông chữ nghệ thuật, nhưng chúng không được sử dụng rộng rãi vì tính khả dụng kém trên các hệ điều hành.
Sự khác biệt giữa phông chữ Serif và Sans-serif
Phông chữ Serif và Phông chữ Sans-serif bạn có thể hiểu là loại phông chữ có chân và phông chữ không chân.
Ví dụ: Font Times New Roman là phông chữ có chân. Còn phông chữ bạn đang đọc đây là phông chữ không chân.
Các phông chữ không chân thường được sử dụng phổ biến trên nền tảng web thì nó giúp đọc tốt hơn khi thu nhỏ.
Còn các phông chữ có chân khi thu nhỏ sẽ bị díu lại với nhau gây hiện tượng khó đọc.
2. Thuộc tính font-style trong CSS
Thuộc tính font-style trong CSS được sử dụng để đặt kiểu phông chữ. Nó có thể là normal, italic hoặc oblique. Giá trị mặc định là normal.
Hãy thử ví dụ sau để hiểu cách thức hoạt động của nó:
Lưu ý: Thoạt nhìn cả hai kiểu chữ xiên và chữ nghiêng đều xuất hiện cùng một thứ, nhưng có một sự khác biệt. Kiểu chữ italic sử dụng một phiên bản in nghiêng của phông chữ trong khi kiểu oblique chỉ đơn giản làm nghiêng đi phông chữ bình thường.
3. Thuộc tính font-size trong CSS
Thuộc tính font-size trong CSS được sử dụng để thiết lập kích thước phông chữ cho nội dung văn bản của một thành phần.
Có một số cách để chỉ định giá trị kích thước phông chữ, ví dụ: Với các từ khóa, tỷ lệ phần trăm, pixel, ems, v.v.
Thiết lập font-size với giá trị pixel
Thiết lập font-size trong CSS với các giá trị pixel (ví dụ: 14px, 16px, v.v.) là một lựa chọn tốt khi bạn cần độ chính xác của pixel.
Pixel là một đơn vị đo lường tuyệt đối chỉ định độ dài cố định. Mỗi 1 pixel là một điểm ảnh.
Hãy thử ví dụ sau để hiểu cách thức hoạt động của nó:
HTML:
<h1>Đây là một tiêu đề.</h1>
<p>Đây là một đoạn văn bản thông thường.</p>
CSS:
h1 {
font-size: 24px;
}
p {
font-size: 14px;
}
Xác định kích thước phông chữ trong bằng pixel không được tốt cho lắm, vì người dùng không thể thay đổi kích thước phông chữ từ cài đặt trình duyệt.
Chẳng hạn, người dùng có mắt kém, cận có thể muốn đặt kích thước phông chữ lớn hơn nhiều so với kích thước do bạn chỉ định.
Do đó, bạn nên tránh sử dụng các giá trị pixel và sử dụng các giá trị có liên quan đến kích thước phông chữ mặc định của người dùng nếu bạn muốn tạo một thiết kế tốt hơn.
Mẹo: Văn bản cũng có thể được thay đổi kích thước trong tất cả các trình duyệt bằng tính năng thu phóng. Tuy nhiên, tính năng này không chỉ thay đổi kích thước văn bản mà còn thay đổi kích thước toàn bộ trang. Do đó, W3C khuyến nghị sử dụng các giá trị em hoặc phần trăm (%) để tạo bố cục trang web, dễ dàng mở rộng hơn.
Thiết lập font-size với giá trị em
Đơn vị em đề cập đến kích thước phông chữ của phần tử cha. Khi xác định thuộc tính kích thước phông chữ, 1em bằng với kích thước của phông chữ áp dụng cho phần tử cha của phần tử.
Vì vậy, nếu bạn đặt kích thước phông chữ là 20px trên thành phần body, thì 1em = 20px và 2em = 40px.
Tuy nhiên, nếu bạn chưa thiết lập kích thước phông chữ ở bất cứ đâu trên trang, thì đó là mặc định của trình duyệt, thường là 16px. Do đó, theo mặc định 1em = 16px và 2em = 32px.
Chúng ta hãy xem ví dụ sau để hiểu về cơ bản nó hoạt động như thế nào:
HTML:
<h1>Đây là một tiêu đề</h1>
<p>Đây là một <span>đoạn văn bản</span>.</p>
Thiết lập font-size kết hợp tỷ lệ phần trăm (%) với giá trị em
Như bạn đã quan sát trong ví dụ trên, việc tính toán các giá trị em có vẻ không được đơn giản lắm.
Để đơn giản hóa điều này, một kỹ thuật phổ biến là đặt kích thước phông chữ cho phần tử body thành 62,5% (tức là 62,5% của 16px mặc định), tương đương với 10px, hoặc 0,625em.
Bây giờ bạn có thể thiết lập kích thước phông chữ cho bất kỳ thành phần nào bằng các đơn vị em, với một chuyển đổi dễ nhớ, bằng cách chia giá trị px cho 10.
<h1>Đây là một tiêu đề</h1>
<p>Đây là một <span>đoạn văn bản</span>.</p>
CSS:
body {
font-size: 62.5%; /* font-size 1em = 10px */
}
p {
font-size: 1.4em; /* 1.4em = 14px */
}
p span {
font-size: 2em; /* 2em = 20px */
}
Thiết lập font-size với Root em
Để làm cho mọi thứ đơn giản hơn nữa, CSS3 đã giới thiệu đơn vị rem (viết tắt của ‘root em’) luôn liên quan đến kích thước phông chữ của phần tử gốc (html), bất kể phần tử nằm ở đâu trong tài liệu (không giống như em Liên quan đến kích thước phông chữ của phần tử cha)
Điều này có nghĩa là 1rem tương đương với kích thước phông chữ của phần tử html, mặc định là 16px trong hầu hết các trình duyệt. Hãy thử một ví dụ để hiểu cách nó thực sự hoạt động:
HTML:
<h1>Đây là một tiêu đề</h1>
<p>Đây là một <span>đoạn văn bản</span>.</p>
CSS:
html {
font-size: 62.5%; /* font-size 1em = 10px */
}
p {
font-size: 1.4rem; /* 1.4rem = 14px */
}
p span {
font-size: 2rem; /* 2rem = 20px */
}
Thiết lập font-size với từ khóa
CSS cung cấp một số từ khóa mà bạn có thể sử dụng để xác định kích thước phông chữ.
Một cỡ chữ tuyệt đối có thể được chỉ định bằng một trong các từ khóa sau:
xx-small
x-small
small
Medium
Large
x-Large
xx-Large.
Trong đó, kích thước phông chữ tương đối có thể được chỉ định bằng cách sử dụng các từ khóa: smaller hoặc larger.
Hãy thử một ví dụ và xem nó hoạt động như thế nào:
HTML:
<h1>Đây là một tiêu đề.</h1>
<p>Đây là một đoạn văn bản thông thường.</p>
CSS:
body {
font-size: large;
}
h1 {
font-size: larger;
}
p {
font-size: smaller;
}
Lưu ý: Từ khóa medium với kích thước phông chữ mặc định của trình duyệt, thường là 16px. Tương tự, xx-small tương đương với 9 pixel, x-small là 10 pixel, small là 13 pixel, large là 18 pixel, x-large là 24 pixel và xx-large là 32 pixel.
Mẹo: Bằng cách thiết lập kích thước phông chữ trên thành phần body, bạn có thể đặt kích thước phông chữ tương đối ở mọi nơi khác trên trang, cho bạn khả năng dễ dàng điều chỉnh kích thước phông chữ lên hoặc xuống tương ứng.
Thiết lập font-size với Viewport Units
Kích thước phông chữ có thể được chỉ định bằng cách sử dụng các Viewport Units như vw hoặc vh.
Các Viewport Units tham chiếu tỷ lệ phần trăm kích thước chế độ xem của trình duyệt, trong đó 1vw = 1% chiều rộng của chế độ xem và 1vh = 1% chiều cao của chế độ xem. Do đó, nếu chế độ xem rộng 1600px, 1vw là 16px.
Hãy thử ví dụ sau bằng cách thay đổi kích thước cửa sổ trình duyệt và xem nó hoạt động như thế nào:
HTML:
<h1>Đây là một tiêu đề.</h1>
<p>Đây là một đoạn văn bản thông thường.</p>
CSS:
body {
font-size: 1vw;
}
h1 {
font-size: 3vw;
}
Tuy nhiên, có một vấn đề với các Viewport Units. Trên màn hình nhỏ, phông chữ trở nên nhỏ đến mức khó đọc.
Để ngăn chặn điều này, bạn có thể sử dụng hàm calc() trong CSS, như thế này:
Trong ví dụ này, ngay cả khi chiều rộng khung nhìn trở thành 0, kích thước phông chữ sẽ tối thiểu là 1em hoặc 16px.
Trong các bài viết tiếp theo bạn sẽ được học sử dụng media queries để tạo ra các kiểu chữ đáp ứng tốt hơn với các thiết bị.
4. Thuộc tính font-weight trong CSS
Thuộc tính font-weight trong CSS chỉ định trọng lượng hoặc độ đậm của phông chữ.
Thuộc tính này có thể lấy một trong các giá trị sau: normal, bold, bolder, lighter, 100, 200, 300, 400, 500, 600, 700, 800, 900 và inherit.
Các giá trị số 100-900 chỉ định font-weight, trong đó mỗi số đại diện cho trọng số lớn hơn trọng số trước. 400 sẽ giống như normal và 700 sẽ trông giống như in đậm.
Giá trị bolder và lighter liên quan đến trọng lượng phông được kế thừa (inherit), trong khi các giá trị khác như normal và bold là font-weight tuyệt đối.
Hãy thử xem ví dụ bên dưới để hiểu cách nó hoạt động:
HTML:
<h1>Đây là một tiêu đề</h1>
<p>Đây là một đoạn văn bản được in đậm</p>
CSS:
p {
font-weight: bold;
}
Lưu ý: Hầu hết các phông chữ chỉ có sẵn trong một số font-weight giới hạn. Thường thì chúng chỉ có sẵn ở dạng normal và bold. Trong trường hợp, nếu một phông chữ không có sẵn font-weight được chỉ định, một lựa chọn thay thế sẽ được chọn là font-weight có sẵn gần nhất.
5. Thuộc tính font-variant trong CSS
Thuộc tính font-variant trong CSS cho phép văn bản được hiển thị trong một biến thể chữ hoa nhỏ (small-caps) đặc biệt.
Hãy thử ví dụ sau để hiểu cách thức hoạt động của thuộc tính này:
HTML:
<h1>Đây là một tiêu đề</h1>
<p>Đây là một đoạn văn bản</p>
CSS:
p {
font-variant: small-caps;
}
Giá trị normal loại bỏ các chữ hoa nhỏ khỏi văn bản đã được định dạng theo cách đó.
Chúc mừng bạn đã hiểu rõ về thuộc tính font trong CSS
Như vậy là trong bài viết này mình đã cùng bạn đi tìm hiểu về 5 thuộc tính của font trong CSS.
Đây là những kiến thức bạn cần nắm vững nếu muốn tạo ra các trang web có trải nghiệm tốt hơn.
>> Tham khảo ngay Khóa học PHP và Khóa học Java (trong khoảng 6 tháng) để nắm vững cách lập trình web từ front end đến back end.