Phần 1: Tạo một Tabbed Content Slick Diện tích sử dụng CSS và jQuery (Phần 1).

Bước 11

Có hai điều chúng ta cần phải làm gì để làm cho nội dung khu vực làm việc. Đầu tiên là chúng ta nên làm cho hai khu vực thứ hai biến mất và thứ hai là để làm cho họ nhìn một cách thích hợp theo kiểu.

.content {
    background-color : # ffffff ;
    đệm : 10px ;
    biên giới : 1px  rắn  # 464c54 ;  
}
#content_ 2 , #content_ 3  { display : none ; }
Bạn sẽ thấy rằng phần đầu tiên của CSS cho trình duyệt rằng tất cả các phần tử với class = "nội dung" nên có màu trắng với lớp đệm và là biên giới (cùng màu với các tab). Phần thứ hai nói rằng các phần tử với id = "content_2" và id = "content_3" cần phải có một màn hình hiển thị: không có, hoặc trong otherwords nên vô hình.

Sau khi chúng tôi thêm một số Javascript chúng ta có thể sử dụng kịch bản để luân phiên giữa display: none và hiển thị: khối để làm cho chúng hiển thị và ẩn.

Vì vậy, đây là cách các tab của chúng tôi đang tìm kiếm, bạn cũng có thể nhìn thấy một phiên bản HTML của nơi chúng tôi đang ở . Như bạn có thể thấy nó đang tìm kiếm khá gần, nhưng chúng ta cần phải khắc phục khoảng cách và thêm một số nội dung thực tế.

Bước 12

Sửa chữa các vấn đề khoảng cách thực sự là một vấn đề chỉ đơn giản là thêm lợi nhuận trở lại các yếu tố <ul> như thế này:

ul.tabs {
    lợi nhuận : 0px ; đệm : 0px ;
    margin-top : 5px ;
    margin-bottom : 6px ;
}
Để được hoàn toàn trung thực tôi không chắc chắn lý do tại sao mà vấn đề khoảng cách xảy ra. Đôi khi HTML thu hút tôi, nhưng tôi chỉ cần điều chỉnh các thiết lập cho đến khi mọi thứ đúng Của mình. Đôi khi trong quá trình tôi tìm ra đâu là nguyên nhân, đôi khi tôi thì không. Tôi đoán những gì tôi nói là, trừ khi bạn đang đi để thực sự có được vào mọi chi tiết thông số kỹ thuật w3, sớm hay muộn bạn sẽ gặp một số vấn đề mà bạn không thể giải thích. Đừng để nó giúp bạn có được xuống, chỉ cần điều chỉnh cho đến khi bạn tìm thấy một sửa chữa hoặc một giải pháp.

Bước 13


Bây giờ chúng ta sẽ thêm một số nội dung vào khu vực nội dung. Tôi tránh được điều này trước khi tôi muốn giữ HTML tìm kiếm đơn giản. Dưới đây là một số:

< div  id = "tabbed_box_1"  class = "tabbed_box" >
    < h4 > Duyệt trang web < nhỏ > Chọn Tab </ nhỏ > </ h4 >
    < div  class = "tabbed_area" >
   
        < ul  class = "tab" >
            < li > < một  href = ""  id = "tab_1"  class = "hoạt động" > Chủ đề </ a > </ li >
            < li > < một  href = ""  id = "tab_2" > lưu trữ </ a > </ li >
            < li > < một  href = ""  id = "tab_3" > Trang </ a > </ li >
        </ ul >
       
        < div  id = "content_1"  class = "nội dung" >
            < ul >
                < li > < một  href = "" > <HTML Kỹ thuật nhỏ > 4 bài viết </ nhỏ > </ a > </ li >
                < li > < một  href = "" > CSS Styling < nhỏ > 32 bài viết </ nhỏ > </ a > </ li >
                < li > < một  href = "" > Flash Hướng dẫn < nhỏ > 2 bài viết </ nhỏ > </ a > </ li >
                < li > < một  href = "" > Web tạp < nhỏ > 19 bài viết </ nhỏ > </ a > </ li >
                < li > < một  href = "" > trang web Tin tức < nhỏ > 6 bài </ nhỏ > </ a > </ li >
                < li > < một  href = "" > Phát triển Web < nhỏ > 8 bài viết </ nhỏ > </ a > </ li >
            </ ul >
        </ div >
        < div  id = "content_2"  class = "nội dung" >
            < ul >
                < li > < một  href = "" > Tháng mười hai 2008 < nhỏ > 6 bài </ nhỏ > </ a > </ li >
                < li > < một  href = "" > Tháng mười một 2008 < nhỏ > 4 bài viết </ nhỏ > </ a > </ li >
                < li > < một  href = "" > Tháng mười 2008 < nhỏ > 22 bài viết </ nhỏ > </ a > </ li >
                < li > < một  href = "" > Tháng 9 năm 2008 < nhỏ > 12 bài viết </ nhỏ > </ a > </ li >
                < li > < một  href = "" > Tháng tám 2008 < nhỏ > 3 bài </ nhỏ > </ a > </ li >
                < li > < một  href = "" > Tháng bảy 2008 < nhỏ > 1 bài viết </ nhỏ > </ a > </ li >
            </ ul >
        </ div >
        < div  id = "content_3"  class = "nội dung" >
            < ul >
                < li > < một  href = "" > Home </ a > </ li >
                < li > < một  href = "" > Giới thiệu về </ a > </ li >
                < li > < một  href = "" > Đóng góp </ a > </ li >
                < li > < một  href = "" > Liên hệ </ a > </ li >
            </ ul >
        </ div >
   
    </ div >

</ div >
Vì vậy, ở đây tôi đã chỉ cần thêm một loạt các danh sách không có thứ tự vào ba lĩnh vực nội dung. Ngẫu nhiên tôi chế giễu này lên như thể nó đã được sử dụng trên một blog WordPress. Nhưng thực sự bạn có thể sử dụng này cho tất cả các loại của sự vật. Mới Flashden trang chủ mà tôi làm việc trên cách đây vài ngày sử dụng khu vực tab để hiển thị các loại khác nhau của các tập tin gần đây.

Bây giờ chúng ta sẽ thêm một số phong cách để làm cho những người nhìn một chút đẹp hơn:

.content ul {
    lợi nhuận : 0px ;
    đệm : 0px  20px  0px  20px ;
}
ul li {.content
    list-style : none ;
    cửa dưới : 1px  rắn  # d6dde0 ;
    padding-top : 15px ;
    padding-bottom : 15px ;
    font-size : 13px ;
}
.content ul li a {
    text-decoration : none ;
    màu : # 3e4346 ;
}
.content ul li một nhỏ  {
    màu : # 8b959c ;
    font-size : 9px ;
    văn bản chuyển đổi : hoa ;
    font-family : Verdana , Arial , Helvetica , sans-serif ;
    vị trí : tương đối ;
    trái : 4px ;
    top : 0px ;
}
Một lần nữa chúng tôi phong cách của chúng tôi lên danh sách. Lần này, thay vì đưa ra các <ul> yếu tố một className, tôi chỉ đơn giản là thêm phong cách cho tất cả <ul> yếu tố bên trong yếu tố với class = "nội dung" . Điều này chỉ có nghĩa là tôi không cần phải viết nhiều tên lớp vào HTML của tôi mà làm cho nó gọn gàng và sạch hơn.

Những điều khác cần lưu ý:

Một lần nữa chúng tôi đã loại bỏ các điểm đạn ra khỏi <li> yếu tố với danh sách theo phong cách: không có .
Lần này chúng tôi đang tạo kiểu tóc các yếu tố danh sách như trái ngược với <a> 's. Điều này là quan trọng bởi vì nếu chúng ta có thể có một mục trình đơn mà không phải là một liên kết, và cách này nó vẫn sẽ nằm gọn trong.
Một lần nữa tôi đã sử dụng một <nhỏ> bọc bên trong <a> để làm cho số lượng bài viết. Tôi đã sử dụng một văn bản chuyển đổi để làm cho nó tất cả các mũ và một số vị trí tương đối để di chuyển nó sang bên phải một chút.

Bước 14


Vì vậy, đây là những gì trang của chúng tôi hình như:


Nói chung nó là khá tốt, ngoại trừ chúng ta có một quá nhiều biên giới. Nhưng đó là OK, chúng ta có thể sửa chữa nó với một giả chọn phép thuật được gọi là " cuối cùng con "như thế này:


.content ul li: cuối cùng con {
    cửa dưới : không có ;
}
Phong cách này chỉ áp dụng đối với các yếu tố cuối cùng của loại hình riêng của mình - tức là cuối cùng <li> yếu tố. Bây giờ tôi phải chỉ ra rằng cuối cùng con không làm việc trong tất cả các trình duyệt. Đặc biệt IE6 không thích nó. Nhưng đó là OK, vì nó không phải là kết thúc của thế giới nếu biên giới là có, và đó là cách tinh tế của tôi về trừng phạt bất cứ ai đã không có ít nhất một mơ hồ đến trình duyệt ngày:-)

Bước 15


Bây giờ có chỉ là một bước nữa để kết thúc HTML của chúng tôi, và đó là một số hình ảnh nền tảng tốt đẹp cho các thành phần của chúng tôi. Như bạn sẽ nhớ lại một số yếu tố trong tập tin PSD ban đầu của tôi đã có gradient tinh tế. Vì vậy, bây giờ là lúc để thêm những người có ba tốt nghiệp bit:. (A) trên tab hoạt động (b) trên các tab không hoạt động và (c) ở dưới cùng của khu vực nội dung. Dưới đây là ba hình ảnh chúng ta sẽ cần:

Họ là một chút khó khăn để nhìn thấy, nhưng về cơ bản họ từng lát nhỏ của gradient rằng chúng tôi sẽ thiết lập như là lặp đi lặp lại hình ảnh nền. Đây là một đóng lên của một cho các tab (lưu ý tôi đã thêm một đường viền mỏng xung quanh nó để nó là một chút rõ ràng hơn. Chú ý rằng có một dòng trắng 1px ở đầu trang. Điều đó sẽ làm cho các tab trông thực sự sắc nét.


Vì vậy, chúng ta cần phải thực hiện một vài điều chỉnh mã CSS để thêm vào hình ảnh nền, như thế này:

ul.tabs li a {
    background-image : url (images / tab_off.jpg);
    background-repeat : repeat-x ;
    background-position : dưới cùng ;
}
ul.tabs li a.active {
    background-image : url (images / tab_on.jpg);
    background-repeat : repeat-x ;
    background-position : top ;
}
.content {
    background-image : url (images / content_bottom.jpg);
    background-repeat : repeat-x ;
    background-position : dưới cùng ;
}
Lưu ý rằng tôi thực sự đưa các bit thêm với phần còn lại của định nghĩa lớp của họ, nhưng vì lợi ích của ngắn gọn vừa sao chép trong chiết xuất. Như bạn có thể thấy trong cả ba trường hợp chúng ta lặp đi lặp lại một hình nền theo trục x chỉ. Trong trường hợp của hai (tab ra và khu vực nội dung), chúng tôi đang làm điều đó cùng phía dưới, và trong khác đó là ở đầu trang.

Theo kiểu!


Và với điều đó chúng tôi đã chính thức hoàn thành phần HTML / CSS của hướng dẫn này. Bạn có thể xem trang theo kiểu kết thúc ở đây.


Thêm một kịch bản đơn giản


Điều tiếp theo chúng ta cần làm là thêm một số Javascript để làm cho các tab của chúng tôi thực sự làm điều gì đó. Đầu tiên chúng ta sẽ làm điều này bằng tay và sau đó tôi sẽ chỉ cho bạn cách sử dụng một thư viện Javascript để thực hiện điều tương tự. Bây giờ tôi phải chỉ ra rằng tôi không có chuyên môn JS, và tôi hy vọng sẽ mang lại một số chủ thực sự programatic viết hướng dẫn ở đây, vì vậy nếu bạn nhận thấy tôi làm bất cứ điều gì đó là một chút mơ hồ, cảm thấy tự do để lại comment và Tôi sẽ học cách hướng dẫn và làm cho nó một chút thực hành tốt nhất nhiều hơn nữa!

Vì vậy, đầu tiên chúng ta hãy phác thảo những gì chúng tôi muốn làm khi có ai đó nhấp chuột vào một tab. Chúng tôi muốn tắt tab hiện tại của chúng tôi, bật mới, ẩn các khu vực nội dung hiện tại và hiển thị mới.

Bây giờ chúng ta có thể có một cái gì đó thông minh hoạt động ra tab mà hiện nay và chuyển nó đi, nhưng nó dễ dàng hơn chỉ để đi qua và chuyển đổi chúng tất cả ra, và sau đó chuyển vào những gì chúng tôi muốn. Tương tự như vậy đối với các lĩnh vực nội dung, chúng ta có thể ẩn tất cả ba trong số họ và sau đó hiển thị những gì chúng tôi muốn. Điều này tiết kiệm cho chúng tôi phải làm việc ra khỏi tình trạng hiện tại của công việc.
Xem thêm: thiet ke web tphcm

Tìm yếu tố sử dụng DOM


Các yếu tố chúng tôi đang làm việc với cái nhìn như thế này:

<a href="" id="tab_1" class="active">
<Div id = "content_1" class = "nội dung">
Bây giờ trong Javascript chúng ta có thể tìm thấy một yếu tố đơn giản bằng cách sử dụng nó là id và document.getElementById () phương pháp. Vì vậy, document.getElementById ('content_1') sẽ cung cấp cho chúng tôi khu vực nội dung đầu tiên. Sau đó chúng tôi có thể thiết lập nó phong cách hiển thị để không sử dụng dòng này:

. document.getElementById ('content_1') style.display = 'không';

Tương tự như vậy để thấy một lớp học chúng tôi sử dụng:

. document.getElementById ('tab_1') className = 'hoạt động';

Vì vậy, sau đó là một thực sự phương pháp đơn giản có thể viết:

chức năng  tabSwitch (new_tab, new_content) {
   
    document.getElementById ( 'content_1' ) .style.display = 'không' ;
    document.getElementById ( 'content_2' ) .style.display = 'không' ;
    document.getElementById ( 'content_3' ) .style.display = 'không' ;      
    document.getElementById (new_content) .style.display = 'khối' ;  
   

    document.getElementById ( 'tab_1' ) .className = '' ;
    document.getElementById ( 'tab_2' ) .className = '' ;
    document.getElementById ( 'tab_3' ) .className = '' ;      
    document.getElementById (new_tab) .className = 'hoạt động' ;    

}
Điều này sẽ được đặt bên trong một tập tin, hãy gọi nó là functions.js . Sau đó chúng tôi sẽ gọi kịch bản này bằng cách thay đổi các liên kết tab của chúng tôi để:

< script  src = "functions.js"  loại = "text / javascript" > </ script >
< ul  class = "tab" >
    < li > < một  href = "javascript: tabSwitch ('tab_1', 'content_1');"  id = "tab_1"  class = "hoạt động" > Chủ đề </ a > </ li >
    < li > < một  href = "javascript: tabSwitch ('tab_2', 'content_2');"  id = "tab_2" > lưu trữ </ a > </ li >
    < li > < một  href = "javascript: tabSwitch ('tab_3', 'content_3');"  id = "tab_3" > Trang </ a > </ li >
</ ul >
Và chắc chắn, đây là một ví dụ của chúng tôi ví dụ javascript siêu đơn giản . Nó hoạt động!

Một kịch bản khác Complex


Hiện nay có một số vấn đề rất rõ ràng với kịch bản này. Không ít trong số đó là nếu bạn thêm một tab khác bạn sẽ phải thay đổi chức năng của bạn. Và nếu bạn có nhiều hơn một tập hợp các tab trên một trang bạn sẽ cần hai chức năng! Vì vậy, hãy cường nó lên một chút:

chức năng  tabSwitch_2 (hoạt động, số lượng, tab_prefix, content_prefix) {
   
    cho  ( var  i = 1; i <số 1; i ++) {
      document.getElementById (content_prefix + i) .style.display = 'không' ;
      document.getElementById (tab_prefix + i) .className = '' ;
    }
    document.getElementById (content_prefix + hoạt động) .style.display = 'khối' ;
    document.getElementById (tab_prefix + hoạt động) .className = 'hoạt động' ;  
   
}
Phiên bản thứ hai của chúng tôi về chức năng chuyển tab có một vài chi tiết lập luận, nhưng là một chút thông minh. Nó giả định rằng chúng ta có một tập hợp các tab và một tập hợp các lĩnh vực nội dung và họ có id có một tiền tố và một tập hợp các số incrementing. Tức là tab_1, tab_2 ... và content_1, content_2 ...

Đối số đầu tiên của chúng tôi có chức năng, 'hoạt động', là số tab / nội dung chúng tôi muốn vào. Đối số thứ hai, 'số', là số lượng các tab đang được sử dụng. Những lập luận thứ ba và thứ tư là các tiền tố được sử dụng trong các id của các yếu tố của chúng tôi.

Các chức năng sau đó đã có một vòng lặp cho rằng chu kỳ thông qua từ 1 đến số lượng các tab và chuyển tất cả chúng ra, sau đó chuyển sang hai chúng tôi muốn trở lại vào lúc kết thúc. Nói cách khác, nó là kịch bản tương tự như trước, nhưng chúng tôi đã chỉ làm cho nó một chút nhỏ bé thông minh hơn.

Vì vậy, trong ví dụ của chúng tôi để gọi các chức năng chúng ta sẽ có mã này:

< script  src = "functions.js"  loại = "text / javascript" > </ script >
< ul  class = "tab" >
    < li > < một  href = "javascript: tabSwitch_2 (1, 3, 'tab_', 'content_');"  id = "tab_1"  class = "hoạt động" > Chủ đề </ a > </ li >
    < li > < một  href = "javascript: tabSwitch_2 (2, 3, 'tab_', 'content_');"  id = "tab_2" > lưu trữ </ a > </ li >
    < li > < một  href = "javascript: tabSwitch_2 (3, 3, 'tab_', 'content_');"  id = "tab_3" > Trang </ a > </ li >
</ ul >
Điều này có nghĩa rằng sau này nếu chúng ta có một bộ thứ hai của các tab, chúng tôi có thể cung cấp cho họ tiền tố id khác nhau và sử dụng các chức năng tương tự một lần nữa và một lần nữa.

Xem ví dụ javascript thứ hai .

Sử dụng jQuery


Gần đây đã có rất nhiều thư viện Javascript xuất hiện, và trong thực tế có (ít nhất) hai được thực hiện cụ thể để đạt được hiệu quả tab này: MooTabs và DomTab . Tôi đã không được sử dụng một trong hai, nhưng từ một cái nhìn ngắn gọn họ nhìn khá hữu dụng.

Tuy nhiên như tôi đã nghe rất nhiều về các thư viện jQuery, tôi quyết định cố gắng chuyển đổi các tab cùng sử dụng jQuery. Tôi có một giải pháp của tôi cảm thấy có thể sử dụng một số công việc, nhưng nó vẫn còn thú vị để xem xét thông qua.

Vì vậy, đầu tiên, đi đến jQuery trang web và tải về phiên bản mới nhất của thư viện kịch bản của họ.

Bắt Hang jQuery


jQuery cung cấp một loạt các chức năng cho phép bạn chọn nhóm của sự vật. Ví dụ, nếu bạn muốn chọn tất cả các yếu tố trên trang đó là một liên kết (tức là <a> yếu tố) và sau đó làm cho họ biến mất, bạn sẽ đặt này trong <head> của khu vực:


<Script src = "kịch bản / jquery-1.2.3.min.js" > </ script>
<Script>
   
    // Khi tải tài liệu làm tất cả mọi thứ bên trong ở đây ...
    $ (Tài liệu) đã sẵn sàng ( chức năng () {
       
        $ ( "a" ) .slideUp ();
         
    });
</ Script>
Dòng đầu tiên cho biết thêm các thư viện kịch bản jQuery. Diện tích kịch bản chính là bên trong một đoạn mã trông như thế này: $ (document) đã sẵn sàng (function () {}); Điều này về cơ bản cho trình duyệt của bạn để thực hiện tất cả mọi thứ bên trong khi nó cập trang. Vì vậy, trong trường hợp của chúng tôi, chúng tôi đang đem lại cho nó lệnh:

1
$ ( "a" ) .slideUp ();
Điều này nói tìm thấy tất cả mọi thứ đó là một <a> và thực hiện slideUp () trên đó. Hay nói cách khác: tìm thấy tất cả các liên kết và làm cho họ biến mất với một hiệu ứng trượt lên. Hãy thử thêm kịch bản cho một trang web và tải nó và bạn sẽ thấy tất cả các liên kết của bạn biến mất. Khá gọn gàng huh?

Nhưng dù sao có rất nhiều cách để lựa chọn điều gì đó, và bạn có thể đọc về họ trong các API và tài liệu . Bạn có thể làm những việc như tìm thấy mọi phần tử với một lớp học nào đó, một id nào đó và như vậy. Tại một số điểm tôi sẽ viết một giới thiệu thích hợp để jQuery hướng dẫn ở đây, nhưng trong thời điểm này, đó là giới thiệu nhỏ sẽ làm - ngoài việc chỉ cần một giờ kinh nghiệm với jQuery tôi nghi ngờ nó muốn được một cái gì đó của một trò hề cho tôi để viết một intro nó!

Trượt Away với Selectors

Vì vậy, sau một chút thử nghiệm, tôi đã đưa ra một cách để sử dụng jQuery để làm slide các tab của tôi trong và ngoài. Để làm điều này đầu tiên tôi thay đổi liên kết của tôi không có bất kỳ javascript, mà là để có một tiêu đề thuộc tính và thêm một class = "tab" . Chú ý rằng bạn có thể cho một yếu tố hai lớp bằng cách làm này: class = "tab đang hoạt động" .

< ul  class = "tab" >
    < li > < một  href = "#"  tiêu đề = "content_1"  class = "active tab" > Chủ đề </ a > </ li >
    < li > < một  href = "#"  tiêu đề = "content_2"  class = "tab" > lưu trữ </ a > </ li >
    < li > < một  href = "#"  tiêu đề = "content_3"  class = "tab" > Trang </ a > </ li >
</ ul >
Bây giờ sử dụng hai yếu tố này, về cơ bản tôi có thể nhận được tất cả các liên kết với các lớp học 'tab' và tôi cũng có thể tìm thấy bất kỳ yếu tố có id bằng với thuộc tính tiêu đề của liên kết đã được chỉ cần nhấp vào. Đây là kịch bản (được đặt trong <head>) mà giải thích điều này tốt hơn một chút:

<Script src = "kịch bản / jquery-1.2.3.min.js" > </ script>
   <Script>
   
     // Khi tải tài liệu làm tất cả mọi thứ bên trong ở đây ...
     $ (Tài liệu) đã sẵn sàng ( chức năng () {
       
       // Khi một liên kết được nhấp
       $ ( "a.tab" ) Tích vào ( chức năng  () {
           
           // Chuyển đổi tất cả các tab tắt
           $ ( ".active" ) .removeClass ( "hoạt động" );
           
           // Chuyển tab này
           $ ( này ) .addClass ( "hoạt động" );
           
           // Trượt tất cả các thành phần với lớp 'nội dung' lên
           $ ( ".content" ) .slideUp ();
           
           // Bây giờ tìm ra những 'danh hiệu' giá trị thuộc tính là gì và tìm các phần tử với id đó. Sau đó trượt xuống đó.
           var  content_show = $ ( này ) .attr ( "title" );
           $ ( "#" + content_show) .slideDown ();
         
       });
   
     });
 </ Script>
Vì vậy, thiet ke website nha trang đã thêm ý kiến ​​để giúp giải thích. Về cơ bản khi bất cứ liên kết với các lớp học 'tab' được click, chúng tôi làm tất cả mọi thứ bên trong chức năng đó.

Lời cuối cùng

OK do đó, một vài phút sau khi thực hiện ví dụ jQuery của tôi, tôi phát hiện ra rằng có trong thực tế, đặc biệt kiểm soát hình ảnh 'tab' trong jQuery . Tôi sẽ cần phải có một vở kịch với ngày mai là không có nghi ngờ nó sẽ làm cho cuộc sống đơn giản hơn rất nhiều!

Trong khi chờ đợi tôi hy vọng bạn thích hướng dẫn bạn thiet ke website đơn giản với bài viết này.

Tạo một Tabbed Content Slick Diện tích sử dụng CSS và jQuery (Phần 2)

 Phần 1: Tạo một Tabbed Content Slick Diện tích sử dụng CSS và jQuery (Phần 1).

Bước 11

Có hai điều chúng ta cần phải làm gì để làm cho nội dung khu vực làm việc. Đầu tiên là chúng ta nên làm cho hai khu vực thứ hai biến mất và thứ hai là để làm cho họ nhìn một cách thích hợp theo kiểu.

.content {
    background-color : # ffffff ;
    đệm : 10px ;
    biên giới : 1px  rắn  # 464c54 ;  
}
#content_ 2 , #content_ 3  { display : none ; }
Bạn sẽ thấy rằng phần đầu tiên của CSS cho trình duyệt rằng tất cả các phần tử với class = "nội dung" nên có màu trắng với lớp đệm và là biên giới (cùng màu với các tab). Phần thứ hai nói rằng các phần tử với id = "content_2" và id = "content_3" cần phải có một màn hình hiển thị: không có, hoặc trong otherwords nên vô hình.

Sau khi chúng tôi thêm một số Javascript chúng ta có thể sử dụng kịch bản để luân phiên giữa display: none và hiển thị: khối để làm cho chúng hiển thị và ẩn.

Vì vậy, đây là cách các tab của chúng tôi đang tìm kiếm, bạn cũng có thể nhìn thấy một phiên bản HTML của nơi chúng tôi đang ở . Như bạn có thể thấy nó đang tìm kiếm khá gần, nhưng chúng ta cần phải khắc phục khoảng cách và thêm một số nội dung thực tế.

Bước 12

Sửa chữa các vấn đề khoảng cách thực sự là một vấn đề chỉ đơn giản là thêm lợi nhuận trở lại các yếu tố <ul> như thế này:

ul.tabs {
    lợi nhuận : 0px ; đệm : 0px ;
    margin-top : 5px ;
    margin-bottom : 6px ;
}
Để được hoàn toàn trung thực tôi không chắc chắn lý do tại sao mà vấn đề khoảng cách xảy ra. Đôi khi HTML thu hút tôi, nhưng tôi chỉ cần điều chỉnh các thiết lập cho đến khi mọi thứ đúng Của mình. Đôi khi trong quá trình tôi tìm ra đâu là nguyên nhân, đôi khi tôi thì không. Tôi đoán những gì tôi nói là, trừ khi bạn đang đi để thực sự có được vào mọi chi tiết thông số kỹ thuật w3, sớm hay muộn bạn sẽ gặp một số vấn đề mà bạn không thể giải thích. Đừng để nó giúp bạn có được xuống, chỉ cần điều chỉnh cho đến khi bạn tìm thấy một sửa chữa hoặc một giải pháp.

Bước 13


Bây giờ chúng ta sẽ thêm một số nội dung vào khu vực nội dung. Tôi tránh được điều này trước khi tôi muốn giữ HTML tìm kiếm đơn giản. Dưới đây là một số:

< div  id = "tabbed_box_1"  class = "tabbed_box" >
    < h4 > Duyệt trang web < nhỏ > Chọn Tab </ nhỏ > </ h4 >
    < div  class = "tabbed_area" >
   
        < ul  class = "tab" >
            < li > < một  href = ""  id = "tab_1"  class = "hoạt động" > Chủ đề </ a > </ li >
            < li > < một  href = ""  id = "tab_2" > lưu trữ </ a > </ li >
            < li > < một  href = ""  id = "tab_3" > Trang </ a > </ li >
        </ ul >
       
        < div  id = "content_1"  class = "nội dung" >
            < ul >
                < li > < một  href = "" > <HTML Kỹ thuật nhỏ > 4 bài viết </ nhỏ > </ a > </ li >
                < li > < một  href = "" > CSS Styling < nhỏ > 32 bài viết </ nhỏ > </ a > </ li >
                < li > < một  href = "" > Flash Hướng dẫn < nhỏ > 2 bài viết </ nhỏ > </ a > </ li >
                < li > < một  href = "" > Web tạp < nhỏ > 19 bài viết </ nhỏ > </ a > </ li >
                < li > < một  href = "" > trang web Tin tức < nhỏ > 6 bài </ nhỏ > </ a > </ li >
                < li > < một  href = "" > Phát triển Web < nhỏ > 8 bài viết </ nhỏ > </ a > </ li >
            </ ul >
        </ div >
        < div  id = "content_2"  class = "nội dung" >
            < ul >
                < li > < một  href = "" > Tháng mười hai 2008 < nhỏ > 6 bài </ nhỏ > </ a > </ li >
                < li > < một  href = "" > Tháng mười một 2008 < nhỏ > 4 bài viết </ nhỏ > </ a > </ li >
                < li > < một  href = "" > Tháng mười 2008 < nhỏ > 22 bài viết </ nhỏ > </ a > </ li >
                < li > < một  href = "" > Tháng 9 năm 2008 < nhỏ > 12 bài viết </ nhỏ > </ a > </ li >
                < li > < một  href = "" > Tháng tám 2008 < nhỏ > 3 bài </ nhỏ > </ a > </ li >
                < li > < một  href = "" > Tháng bảy 2008 < nhỏ > 1 bài viết </ nhỏ > </ a > </ li >
            </ ul >
        </ div >
        < div  id = "content_3"  class = "nội dung" >
            < ul >
                < li > < một  href = "" > Home </ a > </ li >
                < li > < một  href = "" > Giới thiệu về </ a > </ li >
                < li > < một  href = "" > Đóng góp </ a > </ li >
                < li > < một  href = "" > Liên hệ </ a > </ li >
            </ ul >
        </ div >
   
    </ div >

</ div >
Vì vậy, ở đây tôi đã chỉ cần thêm một loạt các danh sách không có thứ tự vào ba lĩnh vực nội dung. Ngẫu nhiên tôi chế giễu này lên như thể nó đã được sử dụng trên một blog WordPress. Nhưng thực sự bạn có thể sử dụng này cho tất cả các loại của sự vật. Mới Flashden trang chủ mà tôi làm việc trên cách đây vài ngày sử dụng khu vực tab để hiển thị các loại khác nhau của các tập tin gần đây.

Bây giờ chúng ta sẽ thêm một số phong cách để làm cho những người nhìn một chút đẹp hơn:

.content ul {
    lợi nhuận : 0px ;
    đệm : 0px  20px  0px  20px ;
}
ul li {.content
    list-style : none ;
    cửa dưới : 1px  rắn  # d6dde0 ;
    padding-top : 15px ;
    padding-bottom : 15px ;
    font-size : 13px ;
}
.content ul li a {
    text-decoration : none ;
    màu : # 3e4346 ;
}
.content ul li một nhỏ  {
    màu : # 8b959c ;
    font-size : 9px ;
    văn bản chuyển đổi : hoa ;
    font-family : Verdana , Arial , Helvetica , sans-serif ;
    vị trí : tương đối ;
    trái : 4px ;
    top : 0px ;
}
Một lần nữa chúng tôi phong cách của chúng tôi lên danh sách. Lần này, thay vì đưa ra các <ul> yếu tố một className, tôi chỉ đơn giản là thêm phong cách cho tất cả <ul> yếu tố bên trong yếu tố với class = "nội dung" . Điều này chỉ có nghĩa là tôi không cần phải viết nhiều tên lớp vào HTML của tôi mà làm cho nó gọn gàng và sạch hơn.

Những điều khác cần lưu ý:

Một lần nữa chúng tôi đã loại bỏ các điểm đạn ra khỏi <li> yếu tố với danh sách theo phong cách: không có .
Lần này chúng tôi đang tạo kiểu tóc các yếu tố danh sách như trái ngược với <a> 's. Điều này là quan trọng bởi vì nếu chúng ta có thể có một mục trình đơn mà không phải là một liên kết, và cách này nó vẫn sẽ nằm gọn trong.
Một lần nữa tôi đã sử dụng một <nhỏ> bọc bên trong <a> để làm cho số lượng bài viết. Tôi đã sử dụng một văn bản chuyển đổi để làm cho nó tất cả các mũ và một số vị trí tương đối để di chuyển nó sang bên phải một chút.

Bước 14


Vì vậy, đây là những gì trang của chúng tôi hình như:


Nói chung nó là khá tốt, ngoại trừ chúng ta có một quá nhiều biên giới. Nhưng đó là OK, chúng ta có thể sửa chữa nó với một giả chọn phép thuật được gọi là " cuối cùng con "như thế này:


.content ul li: cuối cùng con {
    cửa dưới : không có ;
}
Phong cách này chỉ áp dụng đối với các yếu tố cuối cùng của loại hình riêng của mình - tức là cuối cùng <li> yếu tố. Bây giờ tôi phải chỉ ra rằng cuối cùng con không làm việc trong tất cả các trình duyệt. Đặc biệt IE6 không thích nó. Nhưng đó là OK, vì nó không phải là kết thúc của thế giới nếu biên giới là có, và đó là cách tinh tế của tôi về trừng phạt bất cứ ai đã không có ít nhất một mơ hồ đến trình duyệt ngày:-)

Bước 15


Bây giờ có chỉ là một bước nữa để kết thúc HTML của chúng tôi, và đó là một số hình ảnh nền tảng tốt đẹp cho các thành phần của chúng tôi. Như bạn sẽ nhớ lại một số yếu tố trong tập tin PSD ban đầu của tôi đã có gradient tinh tế. Vì vậy, bây giờ là lúc để thêm những người có ba tốt nghiệp bit:. (A) trên tab hoạt động (b) trên các tab không hoạt động và (c) ở dưới cùng của khu vực nội dung. Dưới đây là ba hình ảnh chúng ta sẽ cần:

Họ là một chút khó khăn để nhìn thấy, nhưng về cơ bản họ từng lát nhỏ của gradient rằng chúng tôi sẽ thiết lập như là lặp đi lặp lại hình ảnh nền. Đây là một đóng lên của một cho các tab (lưu ý tôi đã thêm một đường viền mỏng xung quanh nó để nó là một chút rõ ràng hơn. Chú ý rằng có một dòng trắng 1px ở đầu trang. Điều đó sẽ làm cho các tab trông thực sự sắc nét.


Vì vậy, chúng ta cần phải thực hiện một vài điều chỉnh mã CSS để thêm vào hình ảnh nền, như thế này:

ul.tabs li a {
    background-image : url (images / tab_off.jpg);
    background-repeat : repeat-x ;
    background-position : dưới cùng ;
}
ul.tabs li a.active {
    background-image : url (images / tab_on.jpg);
    background-repeat : repeat-x ;
    background-position : top ;
}
.content {
    background-image : url (images / content_bottom.jpg);
    background-repeat : repeat-x ;
    background-position : dưới cùng ;
}
Lưu ý rằng tôi thực sự đưa các bit thêm với phần còn lại của định nghĩa lớp của họ, nhưng vì lợi ích của ngắn gọn vừa sao chép trong chiết xuất. Như bạn có thể thấy trong cả ba trường hợp chúng ta lặp đi lặp lại một hình nền theo trục x chỉ. Trong trường hợp của hai (tab ra và khu vực nội dung), chúng tôi đang làm điều đó cùng phía dưới, và trong khác đó là ở đầu trang.

Theo kiểu!


Và với điều đó chúng tôi đã chính thức hoàn thành phần HTML / CSS của hướng dẫn này. Bạn có thể xem trang theo kiểu kết thúc ở đây.


Thêm một kịch bản đơn giản


Điều tiếp theo chúng ta cần làm là thêm một số Javascript để làm cho các tab của chúng tôi thực sự làm điều gì đó. Đầu tiên chúng ta sẽ làm điều này bằng tay và sau đó tôi sẽ chỉ cho bạn cách sử dụng một thư viện Javascript để thực hiện điều tương tự. Bây giờ tôi phải chỉ ra rằng tôi không có chuyên môn JS, và tôi hy vọng sẽ mang lại một số chủ thực sự programatic viết hướng dẫn ở đây, vì vậy nếu bạn nhận thấy tôi làm bất cứ điều gì đó là một chút mơ hồ, cảm thấy tự do để lại comment và Tôi sẽ học cách hướng dẫn và làm cho nó một chút thực hành tốt nhất nhiều hơn nữa!

Vì vậy, đầu tiên chúng ta hãy phác thảo những gì chúng tôi muốn làm khi có ai đó nhấp chuột vào một tab. Chúng tôi muốn tắt tab hiện tại của chúng tôi, bật mới, ẩn các khu vực nội dung hiện tại và hiển thị mới.

Bây giờ chúng ta có thể có một cái gì đó thông minh hoạt động ra tab mà hiện nay và chuyển nó đi, nhưng nó dễ dàng hơn chỉ để đi qua và chuyển đổi chúng tất cả ra, và sau đó chuyển vào những gì chúng tôi muốn. Tương tự như vậy đối với các lĩnh vực nội dung, chúng ta có thể ẩn tất cả ba trong số họ và sau đó hiển thị những gì chúng tôi muốn. Điều này tiết kiệm cho chúng tôi phải làm việc ra khỏi tình trạng hiện tại của công việc.
Xem thêm: thiet ke web tphcm

Tìm yếu tố sử dụng DOM


Các yếu tố chúng tôi đang làm việc với cái nhìn như thế này:

<a href="" id="tab_1" class="active">
<Div id = "content_1" class = "nội dung">
Bây giờ trong Javascript chúng ta có thể tìm thấy một yếu tố đơn giản bằng cách sử dụng nó là id và document.getElementById () phương pháp. Vì vậy, document.getElementById ('content_1') sẽ cung cấp cho chúng tôi khu vực nội dung đầu tiên. Sau đó chúng tôi có thể thiết lập nó phong cách hiển thị để không sử dụng dòng này:

. document.getElementById ('content_1') style.display = 'không';

Tương tự như vậy để thấy một lớp học chúng tôi sử dụng:

. document.getElementById ('tab_1') className = 'hoạt động';

Vì vậy, sau đó là một thực sự phương pháp đơn giản có thể viết:

chức năng  tabSwitch (new_tab, new_content) {
   
    document.getElementById ( 'content_1' ) .style.display = 'không' ;
    document.getElementById ( 'content_2' ) .style.display = 'không' ;
    document.getElementById ( 'content_3' ) .style.display = 'không' ;      
    document.getElementById (new_content) .style.display = 'khối' ;  
   

    document.getElementById ( 'tab_1' ) .className = '' ;
    document.getElementById ( 'tab_2' ) .className = '' ;
    document.getElementById ( 'tab_3' ) .className = '' ;      
    document.getElementById (new_tab) .className = 'hoạt động' ;    

}
Điều này sẽ được đặt bên trong một tập tin, hãy gọi nó là functions.js . Sau đó chúng tôi sẽ gọi kịch bản này bằng cách thay đổi các liên kết tab của chúng tôi để:

< script  src = "functions.js"  loại = "text / javascript" > </ script >
< ul  class = "tab" >
    < li > < một  href = "javascript: tabSwitch ('tab_1', 'content_1');"  id = "tab_1"  class = "hoạt động" > Chủ đề </ a > </ li >
    < li > < một  href = "javascript: tabSwitch ('tab_2', 'content_2');"  id = "tab_2" > lưu trữ </ a > </ li >
    < li > < một  href = "javascript: tabSwitch ('tab_3', 'content_3');"  id = "tab_3" > Trang </ a > </ li >
</ ul >
Và chắc chắn, đây là một ví dụ của chúng tôi ví dụ javascript siêu đơn giản . Nó hoạt động!

Một kịch bản khác Complex


Hiện nay có một số vấn đề rất rõ ràng với kịch bản này. Không ít trong số đó là nếu bạn thêm một tab khác bạn sẽ phải thay đổi chức năng của bạn. Và nếu bạn có nhiều hơn một tập hợp các tab trên một trang bạn sẽ cần hai chức năng! Vì vậy, hãy cường nó lên một chút:

chức năng  tabSwitch_2 (hoạt động, số lượng, tab_prefix, content_prefix) {
   
    cho  ( var  i = 1; i <số 1; i ++) {
      document.getElementById (content_prefix + i) .style.display = 'không' ;
      document.getElementById (tab_prefix + i) .className = '' ;
    }
    document.getElementById (content_prefix + hoạt động) .style.display = 'khối' ;
    document.getElementById (tab_prefix + hoạt động) .className = 'hoạt động' ;  
   
}
Phiên bản thứ hai của chúng tôi về chức năng chuyển tab có một vài chi tiết lập luận, nhưng là một chút thông minh. Nó giả định rằng chúng ta có một tập hợp các tab và một tập hợp các lĩnh vực nội dung và họ có id có một tiền tố và một tập hợp các số incrementing. Tức là tab_1, tab_2 ... và content_1, content_2 ...

Đối số đầu tiên của chúng tôi có chức năng, 'hoạt động', là số tab / nội dung chúng tôi muốn vào. Đối số thứ hai, 'số', là số lượng các tab đang được sử dụng. Những lập luận thứ ba và thứ tư là các tiền tố được sử dụng trong các id của các yếu tố của chúng tôi.

Các chức năng sau đó đã có một vòng lặp cho rằng chu kỳ thông qua từ 1 đến số lượng các tab và chuyển tất cả chúng ra, sau đó chuyển sang hai chúng tôi muốn trở lại vào lúc kết thúc. Nói cách khác, nó là kịch bản tương tự như trước, nhưng chúng tôi đã chỉ làm cho nó một chút nhỏ bé thông minh hơn.

Vì vậy, trong ví dụ của chúng tôi để gọi các chức năng chúng ta sẽ có mã này:

< script  src = "functions.js"  loại = "text / javascript" > </ script >
< ul  class = "tab" >
    < li > < một  href = "javascript: tabSwitch_2 (1, 3, 'tab_', 'content_');"  id = "tab_1"  class = "hoạt động" > Chủ đề </ a > </ li >
    < li > < một  href = "javascript: tabSwitch_2 (2, 3, 'tab_', 'content_');"  id = "tab_2" > lưu trữ </ a > </ li >
    < li > < một  href = "javascript: tabSwitch_2 (3, 3, 'tab_', 'content_');"  id = "tab_3" > Trang </ a > </ li >
</ ul >
Điều này có nghĩa rằng sau này nếu chúng ta có một bộ thứ hai của các tab, chúng tôi có thể cung cấp cho họ tiền tố id khác nhau và sử dụng các chức năng tương tự một lần nữa và một lần nữa.

Xem ví dụ javascript thứ hai .

Sử dụng jQuery


Gần đây đã có rất nhiều thư viện Javascript xuất hiện, và trong thực tế có (ít nhất) hai được thực hiện cụ thể để đạt được hiệu quả tab này: MooTabs và DomTab . Tôi đã không được sử dụng một trong hai, nhưng từ một cái nhìn ngắn gọn họ nhìn khá hữu dụng.

Tuy nhiên như tôi đã nghe rất nhiều về các thư viện jQuery, tôi quyết định cố gắng chuyển đổi các tab cùng sử dụng jQuery. Tôi có một giải pháp của tôi cảm thấy có thể sử dụng một số công việc, nhưng nó vẫn còn thú vị để xem xét thông qua.

Vì vậy, đầu tiên, đi đến jQuery trang web và tải về phiên bản mới nhất của thư viện kịch bản của họ.

Bắt Hang jQuery


jQuery cung cấp một loạt các chức năng cho phép bạn chọn nhóm của sự vật. Ví dụ, nếu bạn muốn chọn tất cả các yếu tố trên trang đó là một liên kết (tức là <a> yếu tố) và sau đó làm cho họ biến mất, bạn sẽ đặt này trong <head> của khu vực:


<Script src = "kịch bản / jquery-1.2.3.min.js" > </ script>
<Script>
   
    // Khi tải tài liệu làm tất cả mọi thứ bên trong ở đây ...
    $ (Tài liệu) đã sẵn sàng ( chức năng () {
       
        $ ( "a" ) .slideUp ();
         
    });
</ Script>
Dòng đầu tiên cho biết thêm các thư viện kịch bản jQuery. Diện tích kịch bản chính là bên trong một đoạn mã trông như thế này: $ (document) đã sẵn sàng (function () {}); Điều này về cơ bản cho trình duyệt của bạn để thực hiện tất cả mọi thứ bên trong khi nó cập trang. Vì vậy, trong trường hợp của chúng tôi, chúng tôi đang đem lại cho nó lệnh:

1
$ ( "a" ) .slideUp ();
Điều này nói tìm thấy tất cả mọi thứ đó là một <a> và thực hiện slideUp () trên đó. Hay nói cách khác: tìm thấy tất cả các liên kết và làm cho họ biến mất với một hiệu ứng trượt lên. Hãy thử thêm kịch bản cho một trang web và tải nó và bạn sẽ thấy tất cả các liên kết của bạn biến mất. Khá gọn gàng huh?

Nhưng dù sao có rất nhiều cách để lựa chọn điều gì đó, và bạn có thể đọc về họ trong các API và tài liệu . Bạn có thể làm những việc như tìm thấy mọi phần tử với một lớp học nào đó, một id nào đó và như vậy. Tại một số điểm tôi sẽ viết một giới thiệu thích hợp để jQuery hướng dẫn ở đây, nhưng trong thời điểm này, đó là giới thiệu nhỏ sẽ làm - ngoài việc chỉ cần một giờ kinh nghiệm với jQuery tôi nghi ngờ nó muốn được một cái gì đó của một trò hề cho tôi để viết một intro nó!

Trượt Away với Selectors

Vì vậy, sau một chút thử nghiệm, tôi đã đưa ra một cách để sử dụng jQuery để làm slide các tab của tôi trong và ngoài. Để làm điều này đầu tiên tôi thay đổi liên kết của tôi không có bất kỳ javascript, mà là để có một tiêu đề thuộc tính và thêm một class = "tab" . Chú ý rằng bạn có thể cho một yếu tố hai lớp bằng cách làm này: class = "tab đang hoạt động" .

< ul  class = "tab" >
    < li > < một  href = "#"  tiêu đề = "content_1"  class = "active tab" > Chủ đề </ a > </ li >
    < li > < một  href = "#"  tiêu đề = "content_2"  class = "tab" > lưu trữ </ a > </ li >
    < li > < một  href = "#"  tiêu đề = "content_3"  class = "tab" > Trang </ a > </ li >
</ ul >
Bây giờ sử dụng hai yếu tố này, về cơ bản tôi có thể nhận được tất cả các liên kết với các lớp học 'tab' và tôi cũng có thể tìm thấy bất kỳ yếu tố có id bằng với thuộc tính tiêu đề của liên kết đã được chỉ cần nhấp vào. Đây là kịch bản (được đặt trong <head>) mà giải thích điều này tốt hơn một chút:

<Script src = "kịch bản / jquery-1.2.3.min.js" > </ script>
   <Script>
   
     // Khi tải tài liệu làm tất cả mọi thứ bên trong ở đây ...
     $ (Tài liệu) đã sẵn sàng ( chức năng () {
       
       // Khi một liên kết được nhấp
       $ ( "a.tab" ) Tích vào ( chức năng  () {
           
           // Chuyển đổi tất cả các tab tắt
           $ ( ".active" ) .removeClass ( "hoạt động" );
           
           // Chuyển tab này
           $ ( này ) .addClass ( "hoạt động" );
           
           // Trượt tất cả các thành phần với lớp 'nội dung' lên
           $ ( ".content" ) .slideUp ();
           
           // Bây giờ tìm ra những 'danh hiệu' giá trị thuộc tính là gì và tìm các phần tử với id đó. Sau đó trượt xuống đó.
           var  content_show = $ ( này ) .attr ( "title" );
           $ ( "#" + content_show) .slideDown ();
         
       });
   
     });
 </ Script>
Vì vậy, thiet ke website nha trang đã thêm ý kiến ​​để giúp giải thích. Về cơ bản khi bất cứ liên kết với các lớp học 'tab' được click, chúng tôi làm tất cả mọi thứ bên trong chức năng đó.

Lời cuối cùng

OK do đó, một vài phút sau khi thực hiện ví dụ jQuery của tôi, tôi phát hiện ra rằng có trong thực tế, đặc biệt kiểm soát hình ảnh 'tab' trong jQuery . Tôi sẽ cần phải có một vở kịch với ngày mai là không có nghi ngờ nó sẽ làm cho cuộc sống đơn giản hơn rất nhiều!

Trong khi chờ đợi tôi hy vọng bạn thích hướng dẫn bạn thiet ke website đơn giản với bài viết này.
Đọc thêm..
Một trong những thách thức lớn nhất đối với các nhà thiết kế web là tìm cách để ra rất nhiều thông tin trên một trang mà không làm mất khả năng sử dụng. Nội dung là một cách tuyệt vời để xử lý vấn đề này và đã được sử dụng rộng rãi trên blog gần đây. Hôm nay chúng ta sẽ xây dựng một hộp nhỏ thông tin theo thẻ đơn giản trong HTML, sau đó thực hiện chức năng của nó bằng cách sử dụng một số Javascript đơn giản, và cuối cùng chúng tôi sẽ đạt được điều tương tự bằng cách sử dụng thư viện jQuery với bài viết Tạo một Tabbed Content Slick Diện tích sử dụng CSS và jQuery (Phần 1).

Bước 1

Trước tiên, chúng ta cần cái gì đó trông tuyệt vời. Vì vậy, một chuyến đi ngắn đến Photoshop và thì đấy chúng ta có một mockup tốt đẹp của những thành phần theo thẻ của chúng tôi như thế nào. Nó khá thẳng về phía trước với một vài gradient thêm để làm cho nó nettuts tuyệt vời. Bạn có thể lấy các PSD Photoshop tập tin cho hình ảnh này nếu bạn muốn có một cái nhìn gần hơn, nhưng nó khá đơn giản và chúng tôi có thể xây dựng nó ra khỏi JPG phẳng thực sự.

Bước 2


Điều đầu tiên cần làm khi xây dựng tất nhiên là để có được một ý tưởng thô như thế nào bạn sẽ làm điều đó. Điều này sẽ dễ dàng hơn nhiều hơn những điều bạn đã phát triển. Nhìn vào hình ảnh này tôi sẽ nói điều tốt nhất cần làm là:

Có một hộp đựng <div> mà chúng ta sẽ đặt tất cả mọi thứ bên trong. Bằng cách đó, nếu chúng ta cần phải xác định vị trí hộp của chúng tôi hoặc thả nó vào một bên, chúng ta chỉ có thể lấy tất cả mọi thứ gói trong <div> và sao chép + dán nó ở đâu đó.
Sau đó chúng ta sẽ có vùng tiêu đề, có lẽ với một thẻ <h>
Sau đó, dưới đây chúng tôi sẽ có một thẻ thứ hai <div> đó sẽ tổ chức các tab và nội dung. Đây là hộp màu xám đen tối trong hình ảnh.
Sau đó, bên trong có chúng tôi sẽ sử dụng một danh sách không có thứ tự <ul> trong đó mỗi phần tử là một liên kết cho các tab. Điều này sẽ cho phép chúng tôi sử dụng <li> bit của danh sách để xác định vị trí các tab và các bit <a> để tạo kiểu cho họ và cho họ lật và bật / tắt tiểu bang.
Sau đó, dưới đây chúng ta sẽ tạo ra một trận chung kết <div> khu vực trong đó có các nội dung cho mỗi tab. Chúng tôi sẽ cần một trong những cho mỗi tab, và chúng tôi sẽ hiển thị hoặc ẩn chúng tùy thuộc vào tab đã được nhấp vào.
SO để tóm tắt, nó sẽ là một cái gì đó như thế này:

< div >
    < h4 > nhóm </ h4 >
    < div >
     
        < ul >
            < li > < một > Tab </ a > </ li >
            < li > < một > Tab </ a > </ li >
            < li > < một > Tab </ a > </ li >
        </ ul >
         
        < div > Nội dung cho Tab 1 </ div >
        < div > Nội dung cho Tab 2 </ div >
        < div > Nội dung cho Tab 3 </ div >
    </ div >
</ div >

Đừng lo lắng nếu nhìn vào hình ảnh mà không ngay lập tức làm cho bạn nghĩ rằng cấu trúc đó. Đôi khi bạn chỉ cần làm những việc bằng cách thử và sai. Trong trường hợp của tôi, tôi đã thực hiện những điều này theo thẻ nhỏ một vài lần và tôi biết rằng đây là một cách đơn giản tốt đẹp của làm cho chúng.

Ngoài ra nó là tốt đẹp để suy nghĩ về cấu trúc như thế này trước khi bạn có rất nhiều tên lớp và id và nội dung vì nó có thể được khó để nhìn thấy rừng từ cây sau này. Đặc biệt là khi bạn thêm nội dung cho tất cả các tab khác nhau.

Vì vậy, bây giờ chúng ta có một hình ảnh trong tâm trí làm thế nào để xây dựng cấu trúc của chúng tôi, chúng ta hãy để nó!

Bước 3

Bây giờ nếu bạn đã thực hiện theo hướng dẫn của thiet ke website o Ha Noi trên PSDtuts bạn sẽ biết rằng tôi yêu một nền gradient tốt. Vì vậy, trước khi chúng tôi bắt đầu với cấu trúc theo thẻ, chúng ta hãy cho mình một nền tảng tốt đẹp!

Mở Photoshop, tạo một tài liệu 1000px x 1000px và vẽ một tốt đẹp (tinh tế) radial gradient như hình dưới đây. Lưu ý rằng tôi đã rút ra từ trung tâm / đầu và chắc chắn rằng gradient được hoàn thành vào thời gian tôi nhận được để cạnh của tài liệu. Điều đó có nghĩa tôi có thể thiết lập màu nền trong HTML là màu tối hơn và nếu ai đó trải dài cửa sổ trình duyệt của họ nó sẽ được liền mạch.

Bước 4

Vì vậy, tạo một thư mục mới cho dự án, sau đó tạo ra một thư mục thứ hai bên trong đó được gọi là hình ảnh và lưu lại hình ảnh bên trong như background.jpg . Khi lưu sử dụng File> Save for Web và các thiết bị và chọn JPG với một thiết lập chất lượng của khoảng 70 đó đi ra đến một kích thước tập tin của 16kb mà không phải là quá xấu. Đã từng có một thời gian mà bạn thực sự phải tằn tiện và tiết kiệm, nhưng bây giờ bạn chỉ muốn chắc chắn rằng bạn không phải là ngu ngốc lãng phí với các kích thước tập tin của bạn.

Bây giờ chúng ta tạo ra một tài liệu HTML và viết một số mã:

<! DOCTYPE  html PUBLIC "- // W3C // DTD XHTML 1.0 Strict // EN"
 " http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd ">
< html  xmlns = " http://www.w3.org/1999/xhtml "  xml: lang = "en"  lang = "en" >
< đầu >
    < tiêu đề > Tabbed Cơ cấu - Thường xuyên </ tiêu đề >
    < link  rel = "stylesheet"  href = "style.css"  loại = "text / css"  phương tiện truyền thông = "màn hình"  />
</ head >
< cơ thể >
</ body >
</ html >
Vì vậy, đó sẽ là cơ sở của HTML. Bây giờ chúng ta sẽ tạo style.css tài liệu và viết như sau:

body {
    background-image : url (images / background.jpg);
    background-repeat : không lặp lại ;
    background-position : đầu  trung tâm ;
    background-color : # 657.077 ;
    lợi nhuận : 40px ;
}
Một vài điều cần lưu ý ở đây:

Có thể viết cùng một CSS này sử dụng tốc ký và giảm số lượng các dòng được sử dụng, nhưng nó rõ ràng hơn nhiều theo cách này và tốt hơn cho hướng dẫn bằng văn bản!
Chúng tôi có một hình nền (gradient) và chúng tôi đã thiết lập nó để không lặp lại, bởi vì chúng tôi chỉ muốn nó xuất hiện một lần, nó làm trung tâm và cuối cùng là màu nền (# 657.077) là màu sắc tối hơn.
Tôi đã thêm một biên độ 40px. Đây chỉ là vị trí thứ của tôi sau này để nó trông thật đẹp.
Bạn có thể xem kết quả tài liệu HTML ở đây. Lưu ý rằng nếu bạn thay đổi kích thước cửa sổ của bạn đó là một liền mạch đẹp tốt nghiệp nền. Wunderbar!

Bước 5

Tiếp theo chúng ta thêm cấu trúc của chúng tôi để trang để chúng ta có thể bắt đầu tạo kiểu tóc nó.
<! DOCTYPE  html PUBLIC "- // W3C // DTD XHTML 1.0 Strict // EN"
 " http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd ">
< html  xmlns = " http://www.w3.org/1999/xhtml "  xml: lang = "en"  lang = "en" >
< đầu >
    < tiêu đề > Tabbed Cơ cấu - Thường xuyên </ tiêu đề >
    < link  rel = "stylesheet"  href = "style.css"  loại = "text / css"  phương tiện truyền thông = "màn hình"  />
</ head >
< cơ thể >
< div  id = "tabbed_box_1"  class = "tabbed_box" >
    < h4 > Duyệt trang web < nhỏ > Chọn Tab </ nhỏ > </ h4 >
    < div  class = "tabbed_area" >
     
        < ul  class = "tab" >
            < li > < một  href = ""  id = "tab_1"  class = "hoạt động" > lưu trữ </ a > </ li >
            < li > < một  href = ""  id = "tab_2" > Chủ đề </ a > </ li >
            < li > < một  href = ""  id = "tab_3" > Trang </ a > </ li >
        </ ul >
         
        < div  id = "content_1"  class = "nội dung" > Nội dung cho Tab 1 </ div >
        < div  id = "content_2"  class = "nội dung" > Nội dung cho Tab 2 </ div >
        < div  id = "content_3"  class = "nội dung" > Nội dung cho Tab 3 </ div >

    </ div ></ div >
</ body >
</ html >
Vì vậy, như bạn có thể thấy tôi đã về cơ bản sử dụng cấu trúc tương tự tôi đã đề cập trong Bước 2: Tôi đã thêm một số id và các lớp học và một số nội dung thực tế. Đây là lý do đằng sau những gì tôi đã thực hiện:

Đối với tiêu đề, tôi đã đặt ẩn ý "Chọn Tab" trong một <nhỏ> yếu tố. Điều này cho phép tôi sử dụng <h4> yếu tố để định vị tổng thể và <nhỏ> yếu tố để Restyle và vị trí ẩn ý.
Các container <div> có id = "tabbed_box_1" và một class = "tabbed_box" . Tôi đã làm điều này bởi vì chúng tôi có thể tái sử dụng mã này nhiều lần trên cùng một trang. Nếu chúng ta đã làm điều đó chúng ta có thể sử dụng số hiệu của vị trí mỗi người ở những nơi khác nhau. Nhưng chúng tôi vẫn muốn có các lớp học để làm phong cách. Trong khi đó, nếu chúng ta muốn sử dụng id để tạo kiểu tóc, chúng tôi muốn kết thúc phải xác định phong cách tương tự một lần nữa và một lần nữa cho id khác nhau.
Tôi đã cho các liên kết khu vực và nội dung id bởi vì chúng ta cần phải sử dụng Javascript để thao tác chúng sau này.
Cuối cùng tôi đã cho các phần tử <ul> một tên lớp. Trên thực tế chúng ta có thể tạo kiểu cho nó mà không có một lớp học chỉ bởi phong cách .tabbed_area ul {} nhưng điều này có thể bị lẫn lộn với tương lai <ul> 's chúng tôi đặt trong khu vực nội dung. Vì vậy, nó tốt hơn cho nó để có một tên lớp để chúng ta tham khảo.
OK vậy mà không có phong cách nó không thực sự trông giống như nhiều .... chưa!

Bước 6

Bây giờ với phong cách lập các yếu tố, tôi nghĩ rằng đó là tốt nhất để làm việc từ các yếu tố bên ngoài Vì vậy, chúng tôi sẽ bắt đầu với yếu tố này -. <Div id = "tabbed_box" class = "container"> - mà chúng tôi sẽ sử dụng để xác định vị trí hộp độc đáo ở trung tâm của tài liệu chúng tôi sử dụng mã này:

#tabbed_box {
    lợi nhuận : 0px  tự động  0px  tự động ;
    chiều rộng : 300px ;
}

Bước 7

Bây giờ chúng ta sẽ làm vùng tiêu đề. Chúng ta có thể tạo kiểu cho nhóm như thế này:

.tabbed_box h 4  {
    font-family : Arial , Helvetica , sans-serif ;
    font-size : 23px ;
    màu : # ffffff ;
    thư-khoảng cách : -1px ;
    margin-bottom : 10px ;
}
.tabbed_box h 4  nhỏ  {
    màu : # e3e9ec ;
    font-weight : bình thường ;
    font-size : 9px ;
    font-family : Verdana , Arial , Helvetica , sans-serif ;
    văn bản chuyển đổi : hoa ;
    vị trí : tương đối ;
    đầu : -4px ;
    trái : 6px ;
    thư-khoảng cách : 0px ;
}
Một số điều cần lưu ý ở đây:

Thay vì chỉ cần xác định phong cách cho h4, tôi đã xác định cho h4 .tabbed_box. Điều này là rất quan trọng trong một tài liệu HTML lớn hơn bởi vì bạn có thể có một phong cách h4 ở một nơi khác. Vì vậy, bạn muốn chắc chắn rằng bạn không chồng chéo lên nhau hoặc gây ra vấn đề chồng chéo trong tương lai.
Bạn sẽ nhận thấy tôi cũng điều chỉnh lề dưới trên h4 10px. Điều này là để khoảng cách có vẻ đúng. Điều quan trọng là biết rằng nhiều yếu tố có giá trị mặc định. Ví dụ một h4 đã có một lề dưới, và nó lớn hơn, chúng tôi muốn. Vì vậy, nếu chúng ta không đặt mình này nó sẽ xuất hiện với một biên độ lớn hơn. Một số người sử dụng stylesheets đặc biệt mà đặt lại tất cả các giá trị mặc định, nhưng tôi đã nhận được sử dụng để đặt chúng riêng rẽ khi tôi cần.
Bạn sẽ thấy rằng tôi cũng được sử dụng các thuộc tính văn bản chuyển đổi để làm cho văn bản nhỏ tất cả các thủ đô. Chúng tôi tất nhiên có thể vừa viết nó trong mũ, nhưng tôi chỉ thích làm theo cách này!
Ngoài ra, bạn sẽ nhận thấy trong định nghĩa nhỏ, tôi đã cho nó một vị trí: định nghĩa tương đối, điều này là để tôi có thể điều chỉnh, nơi nó xuất hiện, di chuyển nó lên 4px đầu trang và 6px bên phải.
Cuối cùng, khi các yếu tố phong cách h4 tôi đã cho nó một khoảng cách chữ tiêu cực, nhưng điều đó có nghĩa là các yếu tố nhỏ nhận được thư cùng một khoảng cách quá tiêu cực mà chúng ta không muốn. Vì vậy, tôi phải xác định lại một lần nữa là 0px đó. Điều này là nhờ thực tế là phong cách thác xuống - vì thế tên Cascading Style Sheets. Thông thường bạn sẽ nhận thấy một cái gì đó có vẻ lạ trên trang của bạn và nó sẽ là do các yếu tố đã được thừa hưởng một số phong cách bạn hoàn toàn quên mất. Khi lần đầu tiên tôi đã làm điều này chút phong cách tôi nhìn chằm chằm vào chút nhỏ cho lứa tuổi cố gắng tìm ra lý do tại sao nó trông có vẻ chụm lại, cho đến khi tôi nhớ!

Bước 8

Tiếp theo chúng tôi sẽ cung cấp cho chúng tôi bên trong <div> một chút phong cách với mã này:

.tabbed_area {
    biên giới : 1px  rắn  # 494e52 ;
    background-color : # 636d76 ;
    đệm : 8px ;    
}
Điều này chỉ cung cấp cho nó một chút về định nghĩa và không gian các yếu tố nội thất đi từ hai bên. Bạn có thể thấy nơi chúng tôi đến trong hình dưới đây.

Bằng cách làm việc từ bên ngoài vào, chúng tôi đã đưa ra các yếu tố của chúng tôi một chút về hình dạng và nó dễ dàng hơn rất nhiều để xem làm thế nào nó sẽ gió lên tìm kiếm. Cũng thường bạn sẽ có những hạn chế đến từ bên ngoài vào, ví dụ như hộp có thể cần phải phù hợp với một cột có chiều rộng nhất định. Cuối cùng nó cũng là một ý tưởng tốt để đi ra ngoài ở, bởi vì sau đó bất kỳ kế thừa phong cách rất rõ ràng. Ví dụ nếu bạn đi theo con đường khác và đã làm các yếu tố nội thất đầu tiên, sau đó phong cách thể ảnh hưởng đến những yếu tố nội thất và bạn cần phải quay trở lại và điều chỉnh nào.

Bước 9

Bây giờ chúng ta có được những thứ tốt - các tab! Nếu chúng tôi thêm này đôi chút về CSS chúng ta sẽ đi một chặng đường dài để làm cho các tab trông giống như tab:

ul.tabs {
    lợi nhuận : 0px ; đệm : 0px ;
}
ul.tabs li {
    list-style : none ;
    hiển thị : inline ;
}
Mã này nói rằng các phần tử <ul> với lớp 'tab' nên không có lợi nhuận và không có đệm. Nó cũng nói rằng tất cả các <li> yếu tố bên trong nên không có điểm viên đạn kèm theo. Cuối cùng chúng ta thay đổi màn hình hiển thị từ mặc định 'khối' thành 'inline'. Hãy để tôi giải thích rằng bit cuối cùng trong một chi tiết chút.

Các yếu tố trên một trang thường có ba giá trị chung cho 'hiển thị'. Họ là những khối , nội tuyến , hoặc không có .
Thiết lập một yếu tố để không làm cho nó vô hình. Chúng tôi sẽ sử dụng thực tế là sau này.
Thiết lập một yếu tố để nội tuyến làm cho nó chảy cùng với các yếu tố khác cách văn bản không. Vì vậy, ở đây thay vì xuất hiện bên dưới mỗi khác, <li> yếu tố chạy dọc theo chiều ngang.
Thiết lập một yếu tố để ngăn chặn làm cho nó một khu vực hình chữ nhật xuất hiện thường dưới phần tử cuối cùng.
Đó là một lời giải thích thực sự đơn giản, bạn có thể có được một còn qua tại Thiết kế Web From Scratch
Thực tế, có giá trị hiển thị khác mà bạn có thể đọc tại Quirksmode .

Bước 10

Tất nhiên chúng tôi 'tab' vẫn trông khá crappy, vì vậy hãy cung cấp cho họ một số phong cách. Chúng tôi đã sử dụng <li> yếu tố để vị trí của họ, nhưng chúng tôi sẽ sử dụng các yếu tố <a> để tạo kiểu cho chúng, như thế này:
20
21
ul.tabs li a {
    background-color : # 464c54 ;
    màu : # ffebb5 ;
    đệm : 8px  14px  8px  14px ;
    text-decoration : none ;
    font-size : 9px ;
    font-family : Verdana , Arial , Helvetica , sans-serif ;
    font-weight : bold ;
    văn bản chuyển đổi : hoa ;
    biên giới : 1px  rắn  # 464c54 ;
}
ul.tabs li a: hover {
    background-color : # 2f343a ;
    border-color : # 2f343a ;
}
ul.tabs li a.active {
    background-color : # ffffff ;
    màu : # 282e32 ;
    biên giới : 1px  rắn  # 464c54 ;
    cửa dưới : 1px  rắn  #ffffff ;
}
Vì vậy, những gì chúng tôi đã làm ở đây là:

Phong cách lên các từ khóa <a> để nó đệm ra và có nền văn bản và màu sắc phù hợp, và có các thiết lập font chữ.
Tạo ra một phong cách thứ hai cho một: hover và tối màu nền và biên giới. Lưu ý rằng chúng tôi không cần phải đặt tất cả các thiết lập <a> khác vì họ được thừa kế. Chúng tôi chỉ cần thay đổi những cái mà chúng ta muốn thay đổi khi người dùng cuộn chuột lên tab.
Cuối cùng chúng ta có một phong cách thứ ba khi <a> có class = "hoạt động" . Nói cách khác cho các tab được chọn. Một lần nữa, chúng tôi thiết lập màu nền là màu trắng và thay đổi màu sắc văn bản. Một điều cần lưu ý là chúng tôi cũng thay đổi biên giới phía dưới màu trắng. Điều này là để các tab sẽ trông giống như nó được gắn liền với các khu vực nội dung (khi chúng ta thêm nó vào sau!)

Tạo một Tabbed Content Slick Diện tích sử dụng CSS và jQuery (Phần 1)

Một trong những thách thức lớn nhất đối với các nhà thiết kế web là tìm cách để ra rất nhiều thông tin trên một trang mà không làm mất khả năng sử dụng. Nội dung là một cách tuyệt vời để xử lý vấn đề này và đã được sử dụng rộng rãi trên blog gần đây. Hôm nay chúng ta sẽ xây dựng một hộp nhỏ thông tin theo thẻ đơn giản trong HTML, sau đó thực hiện chức năng của nó bằng cách sử dụng một số Javascript đơn giản, và cuối cùng chúng tôi sẽ đạt được điều tương tự bằng cách sử dụng thư viện jQuery với bài viết Tạo một Tabbed Content Slick Diện tích sử dụng CSS và jQuery (Phần 1).

Bước 1

Trước tiên, chúng ta cần cái gì đó trông tuyệt vời. Vì vậy, một chuyến đi ngắn đến Photoshop và thì đấy chúng ta có một mockup tốt đẹp của những thành phần theo thẻ của chúng tôi như thế nào. Nó khá thẳng về phía trước với một vài gradient thêm để làm cho nó nettuts tuyệt vời. Bạn có thể lấy các PSD Photoshop tập tin cho hình ảnh này nếu bạn muốn có một cái nhìn gần hơn, nhưng nó khá đơn giản và chúng tôi có thể xây dựng nó ra khỏi JPG phẳng thực sự.

Bước 2


Điều đầu tiên cần làm khi xây dựng tất nhiên là để có được một ý tưởng thô như thế nào bạn sẽ làm điều đó. Điều này sẽ dễ dàng hơn nhiều hơn những điều bạn đã phát triển. Nhìn vào hình ảnh này tôi sẽ nói điều tốt nhất cần làm là:

Có một hộp đựng <div> mà chúng ta sẽ đặt tất cả mọi thứ bên trong. Bằng cách đó, nếu chúng ta cần phải xác định vị trí hộp của chúng tôi hoặc thả nó vào một bên, chúng ta chỉ có thể lấy tất cả mọi thứ gói trong <div> và sao chép + dán nó ở đâu đó.
Sau đó chúng ta sẽ có vùng tiêu đề, có lẽ với một thẻ <h>
Sau đó, dưới đây chúng tôi sẽ có một thẻ thứ hai <div> đó sẽ tổ chức các tab và nội dung. Đây là hộp màu xám đen tối trong hình ảnh.
Sau đó, bên trong có chúng tôi sẽ sử dụng một danh sách không có thứ tự <ul> trong đó mỗi phần tử là một liên kết cho các tab. Điều này sẽ cho phép chúng tôi sử dụng <li> bit của danh sách để xác định vị trí các tab và các bit <a> để tạo kiểu cho họ và cho họ lật và bật / tắt tiểu bang.
Sau đó, dưới đây chúng ta sẽ tạo ra một trận chung kết <div> khu vực trong đó có các nội dung cho mỗi tab. Chúng tôi sẽ cần một trong những cho mỗi tab, và chúng tôi sẽ hiển thị hoặc ẩn chúng tùy thuộc vào tab đã được nhấp vào.
SO để tóm tắt, nó sẽ là một cái gì đó như thế này:

< div >
    < h4 > nhóm </ h4 >
    < div >
     
        < ul >
            < li > < một > Tab </ a > </ li >
            < li > < một > Tab </ a > </ li >
            < li > < một > Tab </ a > </ li >
        </ ul >
         
        < div > Nội dung cho Tab 1 </ div >
        < div > Nội dung cho Tab 2 </ div >
        < div > Nội dung cho Tab 3 </ div >
    </ div >
</ div >

Đừng lo lắng nếu nhìn vào hình ảnh mà không ngay lập tức làm cho bạn nghĩ rằng cấu trúc đó. Đôi khi bạn chỉ cần làm những việc bằng cách thử và sai. Trong trường hợp của tôi, tôi đã thực hiện những điều này theo thẻ nhỏ một vài lần và tôi biết rằng đây là một cách đơn giản tốt đẹp của làm cho chúng.

Ngoài ra nó là tốt đẹp để suy nghĩ về cấu trúc như thế này trước khi bạn có rất nhiều tên lớp và id và nội dung vì nó có thể được khó để nhìn thấy rừng từ cây sau này. Đặc biệt là khi bạn thêm nội dung cho tất cả các tab khác nhau.

Vì vậy, bây giờ chúng ta có một hình ảnh trong tâm trí làm thế nào để xây dựng cấu trúc của chúng tôi, chúng ta hãy để nó!

Bước 3

Bây giờ nếu bạn đã thực hiện theo hướng dẫn của thiet ke website o Ha Noi trên PSDtuts bạn sẽ biết rằng tôi yêu một nền gradient tốt. Vì vậy, trước khi chúng tôi bắt đầu với cấu trúc theo thẻ, chúng ta hãy cho mình một nền tảng tốt đẹp!

Mở Photoshop, tạo một tài liệu 1000px x 1000px và vẽ một tốt đẹp (tinh tế) radial gradient như hình dưới đây. Lưu ý rằng tôi đã rút ra từ trung tâm / đầu và chắc chắn rằng gradient được hoàn thành vào thời gian tôi nhận được để cạnh của tài liệu. Điều đó có nghĩa tôi có thể thiết lập màu nền trong HTML là màu tối hơn và nếu ai đó trải dài cửa sổ trình duyệt của họ nó sẽ được liền mạch.

Bước 4

Vì vậy, tạo một thư mục mới cho dự án, sau đó tạo ra một thư mục thứ hai bên trong đó được gọi là hình ảnh và lưu lại hình ảnh bên trong như background.jpg . Khi lưu sử dụng File> Save for Web và các thiết bị và chọn JPG với một thiết lập chất lượng của khoảng 70 đó đi ra đến một kích thước tập tin của 16kb mà không phải là quá xấu. Đã từng có một thời gian mà bạn thực sự phải tằn tiện và tiết kiệm, nhưng bây giờ bạn chỉ muốn chắc chắn rằng bạn không phải là ngu ngốc lãng phí với các kích thước tập tin của bạn.

Bây giờ chúng ta tạo ra một tài liệu HTML và viết một số mã:

<! DOCTYPE  html PUBLIC "- // W3C // DTD XHTML 1.0 Strict // EN"
 " http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd ">
< html  xmlns = " http://www.w3.org/1999/xhtml "  xml: lang = "en"  lang = "en" >
< đầu >
    < tiêu đề > Tabbed Cơ cấu - Thường xuyên </ tiêu đề >
    < link  rel = "stylesheet"  href = "style.css"  loại = "text / css"  phương tiện truyền thông = "màn hình"  />
</ head >
< cơ thể >
</ body >
</ html >
Vì vậy, đó sẽ là cơ sở của HTML. Bây giờ chúng ta sẽ tạo style.css tài liệu và viết như sau:

body {
    background-image : url (images / background.jpg);
    background-repeat : không lặp lại ;
    background-position : đầu  trung tâm ;
    background-color : # 657.077 ;
    lợi nhuận : 40px ;
}
Một vài điều cần lưu ý ở đây:

Có thể viết cùng một CSS này sử dụng tốc ký và giảm số lượng các dòng được sử dụng, nhưng nó rõ ràng hơn nhiều theo cách này và tốt hơn cho hướng dẫn bằng văn bản!
Chúng tôi có một hình nền (gradient) và chúng tôi đã thiết lập nó để không lặp lại, bởi vì chúng tôi chỉ muốn nó xuất hiện một lần, nó làm trung tâm và cuối cùng là màu nền (# 657.077) là màu sắc tối hơn.
Tôi đã thêm một biên độ 40px. Đây chỉ là vị trí thứ của tôi sau này để nó trông thật đẹp.
Bạn có thể xem kết quả tài liệu HTML ở đây. Lưu ý rằng nếu bạn thay đổi kích thước cửa sổ của bạn đó là một liền mạch đẹp tốt nghiệp nền. Wunderbar!

Bước 5

Tiếp theo chúng ta thêm cấu trúc của chúng tôi để trang để chúng ta có thể bắt đầu tạo kiểu tóc nó.
<! DOCTYPE  html PUBLIC "- // W3C // DTD XHTML 1.0 Strict // EN"
 " http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd ">
< html  xmlns = " http://www.w3.org/1999/xhtml "  xml: lang = "en"  lang = "en" >
< đầu >
    < tiêu đề > Tabbed Cơ cấu - Thường xuyên </ tiêu đề >
    < link  rel = "stylesheet"  href = "style.css"  loại = "text / css"  phương tiện truyền thông = "màn hình"  />
</ head >
< cơ thể >
< div  id = "tabbed_box_1"  class = "tabbed_box" >
    < h4 > Duyệt trang web < nhỏ > Chọn Tab </ nhỏ > </ h4 >
    < div  class = "tabbed_area" >
     
        < ul  class = "tab" >
            < li > < một  href = ""  id = "tab_1"  class = "hoạt động" > lưu trữ </ a > </ li >
            < li > < một  href = ""  id = "tab_2" > Chủ đề </ a > </ li >
            < li > < một  href = ""  id = "tab_3" > Trang </ a > </ li >
        </ ul >
         
        < div  id = "content_1"  class = "nội dung" > Nội dung cho Tab 1 </ div >
        < div  id = "content_2"  class = "nội dung" > Nội dung cho Tab 2 </ div >
        < div  id = "content_3"  class = "nội dung" > Nội dung cho Tab 3 </ div >

    </ div ></ div >
</ body >
</ html >
Vì vậy, như bạn có thể thấy tôi đã về cơ bản sử dụng cấu trúc tương tự tôi đã đề cập trong Bước 2: Tôi đã thêm một số id và các lớp học và một số nội dung thực tế. Đây là lý do đằng sau những gì tôi đã thực hiện:

Đối với tiêu đề, tôi đã đặt ẩn ý "Chọn Tab" trong một <nhỏ> yếu tố. Điều này cho phép tôi sử dụng <h4> yếu tố để định vị tổng thể và <nhỏ> yếu tố để Restyle và vị trí ẩn ý.
Các container <div> có id = "tabbed_box_1" và một class = "tabbed_box" . Tôi đã làm điều này bởi vì chúng tôi có thể tái sử dụng mã này nhiều lần trên cùng một trang. Nếu chúng ta đã làm điều đó chúng ta có thể sử dụng số hiệu của vị trí mỗi người ở những nơi khác nhau. Nhưng chúng tôi vẫn muốn có các lớp học để làm phong cách. Trong khi đó, nếu chúng ta muốn sử dụng id để tạo kiểu tóc, chúng tôi muốn kết thúc phải xác định phong cách tương tự một lần nữa và một lần nữa cho id khác nhau.
Tôi đã cho các liên kết khu vực và nội dung id bởi vì chúng ta cần phải sử dụng Javascript để thao tác chúng sau này.
Cuối cùng tôi đã cho các phần tử <ul> một tên lớp. Trên thực tế chúng ta có thể tạo kiểu cho nó mà không có một lớp học chỉ bởi phong cách .tabbed_area ul {} nhưng điều này có thể bị lẫn lộn với tương lai <ul> 's chúng tôi đặt trong khu vực nội dung. Vì vậy, nó tốt hơn cho nó để có một tên lớp để chúng ta tham khảo.
OK vậy mà không có phong cách nó không thực sự trông giống như nhiều .... chưa!

Bước 6

Bây giờ với phong cách lập các yếu tố, tôi nghĩ rằng đó là tốt nhất để làm việc từ các yếu tố bên ngoài Vì vậy, chúng tôi sẽ bắt đầu với yếu tố này -. <Div id = "tabbed_box" class = "container"> - mà chúng tôi sẽ sử dụng để xác định vị trí hộp độc đáo ở trung tâm của tài liệu chúng tôi sử dụng mã này:

#tabbed_box {
    lợi nhuận : 0px  tự động  0px  tự động ;
    chiều rộng : 300px ;
}

Bước 7

Bây giờ chúng ta sẽ làm vùng tiêu đề. Chúng ta có thể tạo kiểu cho nhóm như thế này:

.tabbed_box h 4  {
    font-family : Arial , Helvetica , sans-serif ;
    font-size : 23px ;
    màu : # ffffff ;
    thư-khoảng cách : -1px ;
    margin-bottom : 10px ;
}
.tabbed_box h 4  nhỏ  {
    màu : # e3e9ec ;
    font-weight : bình thường ;
    font-size : 9px ;
    font-family : Verdana , Arial , Helvetica , sans-serif ;
    văn bản chuyển đổi : hoa ;
    vị trí : tương đối ;
    đầu : -4px ;
    trái : 6px ;
    thư-khoảng cách : 0px ;
}
Một số điều cần lưu ý ở đây:

Thay vì chỉ cần xác định phong cách cho h4, tôi đã xác định cho h4 .tabbed_box. Điều này là rất quan trọng trong một tài liệu HTML lớn hơn bởi vì bạn có thể có một phong cách h4 ở một nơi khác. Vì vậy, bạn muốn chắc chắn rằng bạn không chồng chéo lên nhau hoặc gây ra vấn đề chồng chéo trong tương lai.
Bạn sẽ nhận thấy tôi cũng điều chỉnh lề dưới trên h4 10px. Điều này là để khoảng cách có vẻ đúng. Điều quan trọng là biết rằng nhiều yếu tố có giá trị mặc định. Ví dụ một h4 đã có một lề dưới, và nó lớn hơn, chúng tôi muốn. Vì vậy, nếu chúng ta không đặt mình này nó sẽ xuất hiện với một biên độ lớn hơn. Một số người sử dụng stylesheets đặc biệt mà đặt lại tất cả các giá trị mặc định, nhưng tôi đã nhận được sử dụng để đặt chúng riêng rẽ khi tôi cần.
Bạn sẽ thấy rằng tôi cũng được sử dụng các thuộc tính văn bản chuyển đổi để làm cho văn bản nhỏ tất cả các thủ đô. Chúng tôi tất nhiên có thể vừa viết nó trong mũ, nhưng tôi chỉ thích làm theo cách này!
Ngoài ra, bạn sẽ nhận thấy trong định nghĩa nhỏ, tôi đã cho nó một vị trí: định nghĩa tương đối, điều này là để tôi có thể điều chỉnh, nơi nó xuất hiện, di chuyển nó lên 4px đầu trang và 6px bên phải.
Cuối cùng, khi các yếu tố phong cách h4 tôi đã cho nó một khoảng cách chữ tiêu cực, nhưng điều đó có nghĩa là các yếu tố nhỏ nhận được thư cùng một khoảng cách quá tiêu cực mà chúng ta không muốn. Vì vậy, tôi phải xác định lại một lần nữa là 0px đó. Điều này là nhờ thực tế là phong cách thác xuống - vì thế tên Cascading Style Sheets. Thông thường bạn sẽ nhận thấy một cái gì đó có vẻ lạ trên trang của bạn và nó sẽ là do các yếu tố đã được thừa hưởng một số phong cách bạn hoàn toàn quên mất. Khi lần đầu tiên tôi đã làm điều này chút phong cách tôi nhìn chằm chằm vào chút nhỏ cho lứa tuổi cố gắng tìm ra lý do tại sao nó trông có vẻ chụm lại, cho đến khi tôi nhớ!

Bước 8

Tiếp theo chúng tôi sẽ cung cấp cho chúng tôi bên trong <div> một chút phong cách với mã này:

.tabbed_area {
    biên giới : 1px  rắn  # 494e52 ;
    background-color : # 636d76 ;
    đệm : 8px ;    
}
Điều này chỉ cung cấp cho nó một chút về định nghĩa và không gian các yếu tố nội thất đi từ hai bên. Bạn có thể thấy nơi chúng tôi đến trong hình dưới đây.

Bằng cách làm việc từ bên ngoài vào, chúng tôi đã đưa ra các yếu tố của chúng tôi một chút về hình dạng và nó dễ dàng hơn rất nhiều để xem làm thế nào nó sẽ gió lên tìm kiếm. Cũng thường bạn sẽ có những hạn chế đến từ bên ngoài vào, ví dụ như hộp có thể cần phải phù hợp với một cột có chiều rộng nhất định. Cuối cùng nó cũng là một ý tưởng tốt để đi ra ngoài ở, bởi vì sau đó bất kỳ kế thừa phong cách rất rõ ràng. Ví dụ nếu bạn đi theo con đường khác và đã làm các yếu tố nội thất đầu tiên, sau đó phong cách thể ảnh hưởng đến những yếu tố nội thất và bạn cần phải quay trở lại và điều chỉnh nào.

Bước 9

Bây giờ chúng ta có được những thứ tốt - các tab! Nếu chúng tôi thêm này đôi chút về CSS chúng ta sẽ đi một chặng đường dài để làm cho các tab trông giống như tab:

ul.tabs {
    lợi nhuận : 0px ; đệm : 0px ;
}
ul.tabs li {
    list-style : none ;
    hiển thị : inline ;
}
Mã này nói rằng các phần tử <ul> với lớp 'tab' nên không có lợi nhuận và không có đệm. Nó cũng nói rằng tất cả các <li> yếu tố bên trong nên không có điểm viên đạn kèm theo. Cuối cùng chúng ta thay đổi màn hình hiển thị từ mặc định 'khối' thành 'inline'. Hãy để tôi giải thích rằng bit cuối cùng trong một chi tiết chút.

Các yếu tố trên một trang thường có ba giá trị chung cho 'hiển thị'. Họ là những khối , nội tuyến , hoặc không có .
Thiết lập một yếu tố để không làm cho nó vô hình. Chúng tôi sẽ sử dụng thực tế là sau này.
Thiết lập một yếu tố để nội tuyến làm cho nó chảy cùng với các yếu tố khác cách văn bản không. Vì vậy, ở đây thay vì xuất hiện bên dưới mỗi khác, <li> yếu tố chạy dọc theo chiều ngang.
Thiết lập một yếu tố để ngăn chặn làm cho nó một khu vực hình chữ nhật xuất hiện thường dưới phần tử cuối cùng.
Đó là một lời giải thích thực sự đơn giản, bạn có thể có được một còn qua tại Thiết kế Web From Scratch
Thực tế, có giá trị hiển thị khác mà bạn có thể đọc tại Quirksmode .

Bước 10

Tất nhiên chúng tôi 'tab' vẫn trông khá crappy, vì vậy hãy cung cấp cho họ một số phong cách. Chúng tôi đã sử dụng <li> yếu tố để vị trí của họ, nhưng chúng tôi sẽ sử dụng các yếu tố <a> để tạo kiểu cho chúng, như thế này:
20
21
ul.tabs li a {
    background-color : # 464c54 ;
    màu : # ffebb5 ;
    đệm : 8px  14px  8px  14px ;
    text-decoration : none ;
    font-size : 9px ;
    font-family : Verdana , Arial , Helvetica , sans-serif ;
    font-weight : bold ;
    văn bản chuyển đổi : hoa ;
    biên giới : 1px  rắn  # 464c54 ;
}
ul.tabs li a: hover {
    background-color : # 2f343a ;
    border-color : # 2f343a ;
}
ul.tabs li a.active {
    background-color : # ffffff ;
    màu : # 282e32 ;
    biên giới : 1px  rắn  # 464c54 ;
    cửa dưới : 1px  rắn  #ffffff ;
}
Vì vậy, những gì chúng tôi đã làm ở đây là:

Phong cách lên các từ khóa <a> để nó đệm ra và có nền văn bản và màu sắc phù hợp, và có các thiết lập font chữ.
Tạo ra một phong cách thứ hai cho một: hover và tối màu nền và biên giới. Lưu ý rằng chúng tôi không cần phải đặt tất cả các thiết lập <a> khác vì họ được thừa kế. Chúng tôi chỉ cần thay đổi những cái mà chúng ta muốn thay đổi khi người dùng cuộn chuột lên tab.
Cuối cùng chúng ta có một phong cách thứ ba khi <a> có class = "hoạt động" . Nói cách khác cho các tab được chọn. Một lần nữa, chúng tôi thiết lập màu nền là màu trắng và thay đổi màu sắc văn bản. Một điều cần lưu ý là chúng tôi cũng thay đổi biên giới phía dưới màu trắng. Điều này là để các tab sẽ trông giống như nó được gắn liền với các khu vực nội dung (khi chúng ta thêm nó vào sau!)
Đọc thêm..
Trong hướng dẫn này chúng tôi sẽ xây dựng một "logger" mixin trong sass, trong đó kết quả đầu ra linh hoạt, thông tin đăng nhập như CSS khi Sass được biên dịch.

Khai thác gỗ là quá trình ghi chép các hoạt động ứng dụng và nhà nước với một giao diện thứ cấp. - Dự án luật

Ý tưởng

Một ngày nọ, gọn gàng duy trì Reda Lemedan và tôi đã nói tất cả những điều Sass và tất cả những bất ngờ tôi nhìn thấy một mixin thú vị của mình :

include -neat-cảnh báo ( "Cái gì là sai" );

Tôi hỏi anh ta những gì mixin này không, và ông nói với tôi nó về cơ bản là một wrapper cho warn chỉ thị từ Sass để kiểm tra có hay không người dùng sẵn sàng để in cảnh báo từ gọn gàng trong giao diện điều khiển (dựa trên một biến toàn cầu).

Vì vậy, tôi nghĩ đến bản thân mình tại sao dừng lại ở đó? và bắt đầu chơi với ý tưởng rằng cùng một đêm. Ý tưởng của tôi là xây dựng một wrapper cho cả warn và error ( từ Sass 3.4 ) để giúp thư viện và khuôn khổ phát triển in loại khác nhau của tin nhắn (thông tin, gỡ lỗi, cảnh báo, báo lỗi ...) và theo dõi tất cả các bản ghi.

Thực hiện hiện tại của tôi cung cấp:

5 mức độ đăng nhập ( DEBUG , INFO , WARN , LỖI và gây tử vong );
một mức độ tối thiểu mà các logger bắt đầu in ấn;
một lịch sử của tất cả các bản ghi, có thể được in như CSS;
một API thân thiện, dễ dàng sử dụng các chức năng;
một người trợ giúp để tìm hiểu thêm về mức độ khác nhau của khai thác gỗ.

Làm thế nào nó làm việc?

Hóa ra là khá đơn giản. Chúng ta cần một biến toàn cầu giữ toàn bộ cấu hình, và một mixin phục vụ như là một wrapper cho chỉ thị giao diện điều khiển in ấn của chúng tôi.

Bởi vì chúng tôi muốn cấu hình toàn cầu của chúng tôi được tùy biến (một mức độ nào), chúng tôi quấn tuyên bố của mình trong một mixin. Đây không chỉ là thuận tiện hơn, nhưng nó cũng đẹp hơn cho người dùng cuối.

Vì vậy, thiết kế web ở Hải Phòng có một mixin, hãy gọi nó là logger chỉ là intented để được gọi là một lần, tạo ra một bản đồ toàn cầu giữ cấu hình của chúng tôi. Sau đó, chúng tôi có bao bọc của chúng tôi, đăng nhập , chấp nhận một mức độ khai thác gỗ (ví dụ WARN hoặc ERROR ) và thông tin đăng nhập như các đối số. Đó là khá nhiều đó.

Để làm cho mọi việc thuận tiện hơn cho các nhà phát triển, chúng tôi sẽ cung cấp một số chức năng tốc ký để đăng nhập cấp độ khác nhau. Ví dụ, thay vì phải gõ:


loginclude ( "ERROR" , "Không có đủ lân ở đây." );
... Chúng ta có thể có:


ERRORinclude ( "Không có đủ lân ở đây." );
Vì vậy, bạn sẽ kết thúc với một API như thế này:

// Khởi tạo một logger
// Bắt đầu bản ghi in tại `INFO` cấp .
// Điều này có nghĩa rằng các bản ghi `DEBUG` sẽ không được hiển thị.
loggerinclude ( "thông tin" );

Đăng nhập // điều.
ERRORinclude ( "Không có đủ lân ở đây." );
Chúng tôi cũng sẽ thêm một số mixins để mang lại một số tính năng bổ sung tuyệt vời:

một thông tin về in ấn mỗi cấp độ khai thác gỗ như một lời nhắc nhở;
một in ấn tất cả các bản ghi đã được đăng ký trong biên soạn hiện hành.

Xây dựng các API

Logger Constructor
Hãy bắt đầu với đầu, thì chúng tôi? Logger xây dựng . Điều này sẽ chấp nhận một tham số duy nhất: mức độ mà tại đó các logger nên bắt đầu in các bản ghi trong giao diện điều khiển.

Điều này hoàn toàn là một mô hình phổ biến cho các hệ thống thiet ke web. Ví dụ:

Nếu bạn chỉ muốn in lỗi ( ERROR và gây tử vong ), bạn muốn viết loggerinclude ("LỖI") .
Nếu bạn muốn in tất cả mọi thứ, bạn có muốn đi với loggerinclude ("ALL") , mà về cơ bản là tương tự như mức độ khai thác gỗ thấp nhất ( DEBUG ).
Nếu bạn muốn vô hiệu hóa hoàn toàn logger, bạn chạy loggerinclude ("OFF") .
Lưu ý : bạn có thể tìm thêm thông tin về mức độ khai thác gỗ trong này đề StackOverflow hoặc trong Apache các bản ghi tài liệu .

loggermixin ($ minimum- cấp ) {
  // Danh mục mức có sẵn
  $ Cấp: "DEBUG" , "thông tin" , "WARN" , "LỖI" , "Fatal" ;

  // Hãy chắc chắn rằng chuỗi cho trước là chữ hoa
  $ Tối thiểu cấp: sang chữ hoa ($ minimum- cấp );

  // Nếu mức  là `all`, đi với thấp nhất mức độ  của tất cả
  if $ minimum- mức  == "TẤT CẢ"  {
    $ Tối thiểu cấp: (mức $, thứ n 1 );
  }

  // Nếu mức độ  là không hợp lệ, tùy ý đi với `INFO`
  if không chỉ mục (mức $ "OFF" , $ minimum- cấp ) {
    $ Tối thiểu cấp: "thông tin" ;
  }

  // Tạo biến toàn cầu
  $ Logger cấu hình: (
    // Danh mục mức có sẵn
    "Cấp độ"   : $ cấp,

    // Danh sách các cấp được in với `@ error`
    "Lỗi"   : "Fatal"  "LỖI" ,

    // Tối thiểu cấp độ  (như là một chỉ số của `$ levels`) để in
    "Min"      : chỉ số ($ cấp, $ minimum- cấp ),

    // Hay không logger được kích hoạt
    "Kích hoạt"  : $ minimum- cấp  ! = "OFF" ,

    // Một bản đồ để theo dõi tất cả  các bản ghi
    "Lịch sử"  : (
      "DEBUG"  : (),
      "INFO"   : (),
      "WARN"   : (),
      "Lỗi"  : (),
      "Fatal"  : ()
    )
  !) Toàn cầu;
}
Đoạn mã trên nên chủ yếu là tự giải thích, nhưng tôi đã thêm một số ý kiến ​​để làm cho mọi thứ rõ ràng. Như bạn thấy, mixin này không làm được gì nhiều ngoại trừ tạo ra một biến toàn cầu. Không phải là xấu, phải không?

Trước khi tiếp tục, chúng ta hãy tạo ra một chức năng trợ giúp ít mà làm cho nó dễ dàng cho chúng tôi để có được một giá trị từ bản đồ toàn cầu này. Bởi vì bạn biết đấy, gõ bản đồ-get ($ logger-cấu hình, ...) không phải là điều khiển từ xa thú vị. Những gì về logger-conf (...) để thay thế?

1
2
3
function logger-conf ($ key) {
  @ trả lại bản đồ nhận được ($ logger-cấu hình, $ key);
}

Đăng nhập Wrapper

Được rồi, chúng ta hãy chuyển sang thực tế ghi chức năng có khả năng in những thứ trong giao diện điều khiển. Không chỉ cần nó ra các thông điệp được đưa ra trong giao diện điều khiển của người dùng, nhưng nó cũng nên cập nhật lịch sử để theo dõi những gì đang được đăng (có thể hoặc có thể không có ích).

Đó là âm thanh khó khăn. Cũng lo lắng không, nó sẽ được như mịn như bơ. Chúng ta đã biết mixin này nên chỉ chấp nhận hai tham số: mức độ khai thác gỗ, và tin nhắn.

mixin log ($ cấp , $ message) {
  // Hãy chắc chắn rằng mức độ  là chữ hoa
  $ Mức: đến chữ hoa ($ cấp );

  // Trừ khi đó là vô hiệu hóa, tiến hành
  if logger-conf ( "kích hoạt" ) {
    // Lấy hiện mức chỉ số 's
    // Ví dụ, `DEBUG` sẽ là` 1 `
    $ Index hiện tại cấp: chỉ số (logger-conf ( "độ" ), $ cấp );

    // Nếu `$ mức `là không hợp lệ,
    // Tùy ý rơi trở lại vào `INFO`
    if không $ index-trị dòng mức  {
      $ Mức độ: "thông tin" ;
    }

    // Cập nhật lịch sử logger
    include logger-update-lịch sử ($ cấp , $ message);

    // Cuối cùng, in  thông báo trong giao diện điều khiển
    // Nếu hiện tại mức độ  lớn hơn hoặc bằng mức tối thiểu mức độ .
    if $ index-trị dòng cấp độ  > = logger-conf ( "min" ) {
      $ In: '['  + $ mức  + '] ::'  + $ tin;

      // In nó như là `@ error` nếu nó là một lỗi cấp
      if chỉ số (logger-conf ( "lỗi" ), $ cấp ) {
        error $ in ;
      }

      // Khác sử dụng `@ warn`
      else {
        warn $ in ;
      }
    }
  }
}
Bây giờ, chúng ta cần phải đối phó với việc cập nhật lịch sử. Đây thực sự là một chút khó khăn hơn, nhưng một khi bạn đã quen với các thao tác bản đồ, nó trở nên rõ ràng hơn.

Trước khi nhìn vào mã, hãy để tôi giải thích như thế nào là làm việc lịch sử. Về cơ bản, đó là một bản đồ nơi phím là mức khai thác gỗ, và giá trị là danh sách các thư lưu lại. Ví dụ, bạn có thể có một cái gì đó như:

$ _: (
  "DEBUG" : (),
  "INFO" : (),
  "WARN" : (
    "Bạn nên chú ý đến điều này." ,
    "Điều này có thể được cải thiện."
  ),
  "Lỗi" : (
    "Một cái gì đó bị hỏng."
  ),
  "Fatal" : ()
)
Được rồi. Chúng ta hãy đi.

mixin logger-update-lịch sử ($ cấp , $ message) {
  // Lấy bản đồ lịch sử từ cấu hình
  $ Lịch sử: logger-conf ( "lịch sử" );

  // Lấy danh sách lịch sử cho hiện tại cấp độ
  $ Hiện tại cấp-lịch sử: Bản đồ-get ($ lịch sử, $ cấp );

  // Nối nhật ký tươi vào danh sách
  $ Hiện tại cấp-lịch sử: append ($ hiện tại cấp-lịch sử, $ message);

  // Tạo một biến tạm thời chứa các bản đồ lịch sử mới
  $ Logger-lịch sử: bản đồ kết hợp ($ lịch sử, ($ mức: $ hiện tại cấp-lịch sử));

  // Cập nhật bản đồ lịch sử từ cấu hình với các biến tạm thời của chúng tôi
  $ Logger cấu hình: bản đồ kết hợp ($ logger-cấu hình, ( "lịch sử" : $ logger-lịch sử)) toàn cầu;
}
Nó liên quan đến một vài dòng không thân thiện, nhưng khi bạn giải thích từng dòng riêng biệt, tất cả ý nghĩa cuối cùng.

Chúng tôi đang thực hiện ở đây, nhưng chúng tôi đã nói về việc thêm chức năng viết tắt. Hãy làm điều đó bây giờ trước khi chúng ta quên mất:

mixin gây tử vong ($ message) {đăng nhậpinclude ( "gây tử vong" , $ message); }
ERRORmixin ($ message) {đăng nhậpinclude ( "LỖI" , $ message); }
mixin WARN ($ message) {đăng nhậpinclude ( "WARN" , $ message); }
mixin INFO ($ message) {đăng nhậpinclude ( "thông tin" , $ message); }
mixin DEBUG ($ message) {đăng nhậpinclude ( "DEBUG" , $ message); }
Đó là nó. Một điều cuối cùng chúng ta có thể làm, nhưng không thực sự bắt buộc, đang thử nghiệm liệu logger đã được bao gồm trước khi cố gắng sử dụng các bản đồ toàn cầu. Không chỉ làm chúng ta ngăn chặn những sai lầm ngu ngốc, nhưng chúng tôi cũng có thể làm cho instantiation logger tùy chọn bằng cách thực hiện nó trên bay.

mixin log ($ cấp , $ message) {
  // Kiểm tra xem `biến toàn cầu logger-configuration` tồn tại.
  // Nếu không, nó có nghĩa là `logger` đã không được bao gồm,
  // Vì vậy chúng tôi bao gồm nó, tùy ý thiết lập min cấp  để `INFO`.
  if không toàn cầu-biến-tồn tại ( "logger cấu hình" ) {
    loggerinclude ( "thông tin" );
  }

  if logger-conf ( "kích hoạt" ) {
    // ...
  }
}

Thêm Extras

Chúng tôi sẽ bắt đầu với lần đầu tiên (và hữu dụng nhất) của cả hai mixins thêm, người trợ giúp. Nó thực sự là một tiện ích vào thời điểm này vì tất cả nó có phải là in một quy tắc CSS với mức độ khai thác gỗ? Để chọn, và giải thích là giá trị.

Đây là intented để cung cấp cho một số giúp đỡ để phát triển khi họ không thực sự biết được mức độ khai thác gỗ họ nên sử dụng. Nó có thể đã được viết như một bình luận nhưng tôi muốn thử điều này thingie máy in giúp đỡ.

mixin logger- giúp đỡ  {
  // Mở một `logger- mới giúp `chọn
  logger- giúp đỡ  {
    OFF: "Vô hiệu hoá các logger." ;
    Fatal: "lỗi nghiêm trọng gây ra chấm dứt sớm." ;
    LỖI: "lỗi thời gian chạy khác hoặc điều kiện bất ngờ." ;
    WARN: "Sử dụng các API phản đối, người nghèo sử dụng các API," gần như "lỗi"
    + "các tình huống khác mà không mong muốn hoặc không mong muốn, nhưng không nhất thiết phải sai chạy." ;
    INFO: "Thú vị sự kiện thời gian chạy (khởi động / tắt máy)." ;
    DEBUG: "Thông tin chi tiết về lưu lượng thông qua hệ thống." ;
  }
}
Bạn sử dụng nó như thế này:

1
include logger- giúp đỡ ;
... Và biên dịch như sau:

logger- giúp đỡ  {
  OFF: "Vô hiệu hoá các logger." ;
  Fatal: "lỗi nghiêm trọng gây ra chấm dứt sớm." ;
  LỖI: "lỗi thời gian chạy khác hoặc điều kiện bất ngờ." ;
  WARN: "Sử dụng các API phản đối, người nghèo sử dụng các API, 'gần như' lỗi, các tình huống khác mà không mong muốn hoặc không mong muốn, nhưng không nhất thiết phải sai chạy." ;
  INFO: "Thú vị sự kiện thời gian chạy (khởi động / tắt máy)." ;
  DEBUG: "Thông tin chi tiết về lưu lượng thông qua hệ thống." ;
}
Không có gì đặc biệt. Các mixin thêm khác là cách thú vị hơn. Nó sử dụng lịch sử để in tất cả các bản ghi đã được đăng ký trong quá trình biên dịch.

mixin logger-in các bản ghi {
  // Mở một mới `chọn logger-logs`
  logger bản ghi {
    // Vòng trong lịch sử
    each $ cấp , $ các bản ghi trong logger-conf ( "lịch sử" ) {
      // Kiểm tra xem hiện khai thác gỗ mức  từ vòng lặp
      // Sẽ được hiển thị hay không dựa trên mức tối thiểu mức độ
      // Và độ dài của giá trị của nó (không đăng nhập, không in ).
      if chỉ số (logger-conf ( "độ" ), $ cấp )> = logger-conf ( "min" ) và chiều dài ($ log)> 0  {
        // Vòng qua các bản ghi đăng ký và in  chúng.
        each $ đăng nhập vào bản ghi $ {
          # $ { mức }: $ đăng nhập;
        }
      }
    }
  }
}
Một lần nữa, sử dụng đơn giản:

include logger-in các bản ghi;
... Đó sẽ ra (dựa trên ví dụ trước đó của chúng tôi):

logger bản ghi {
  WARN: "Bạn nên chú ý đến điều này." ;
  WARN: "Điều này có thể được cải thiện." ;
  LỖI: "Một cái gì đó bị hỏng" ;
}

Ví dụ

// Khởi một logger mới với `INFO` là tối thiểu cấp  để đăng nhập.
// Nếu không có, nó sẽ tự động được thực hiện trên đăng nhập đầu tiên.
loggerinclude ( "thông tin" );

// Logger giúp đỡ  (tùy chọn, rõ ràng)
include logger- giúp đỡ ;

Đăng nhập // thứ
INFOinclude ( "Này, nhìn vào đó." );
INFOinclude ( "Mang trong kỳ lân!" );
include WARN ( "Dude, chú ý." );

// Điều này không được in nhưng vẫn theo dõi trong các bản ghi.
DEBUGinclude ( "Debug và các công cụ." );

// Lịch sử đầu ra (tùy chọn) đặc biệt hữu ích để gỡ lỗi
include logger-in các bản ghi;
Xem thêm: sitemap la gi?

Kết luận

Như bạn thấy, mã này là khá nhẹ cuối cùng, cộng với số lượng lớn nhất của nó là ý kiến. Tôi nghĩ rằng nó cung cấp một API sạch đẹp giúp theo dõi những gì đang được đăng nhập vào bất kỳ dự án nào.

Đây là công cụ nhằm mục đích thư viện và khuôn khổ phát triển. Nếu bạn tình cờ được một, xin vui lòng cho một thử này nếu bạn nghĩ nó có thể là hữu ích, và đưa cho tôi thông tin phản hồi của bạn.

Bài viết khác: thiet ke web tphcm

Xây dựng một Logger Mixin trong Sass

Trong hướng dẫn này chúng tôi sẽ xây dựng một "logger" mixin trong sass, trong đó kết quả đầu ra linh hoạt, thông tin đăng nhập như CSS khi Sass được biên dịch.

Khai thác gỗ là quá trình ghi chép các hoạt động ứng dụng và nhà nước với một giao diện thứ cấp. - Dự án luật

Ý tưởng

Một ngày nọ, gọn gàng duy trì Reda Lemedan và tôi đã nói tất cả những điều Sass và tất cả những bất ngờ tôi nhìn thấy một mixin thú vị của mình :

include -neat-cảnh báo ( "Cái gì là sai" );

Tôi hỏi anh ta những gì mixin này không, và ông nói với tôi nó về cơ bản là một wrapper cho warn chỉ thị từ Sass để kiểm tra có hay không người dùng sẵn sàng để in cảnh báo từ gọn gàng trong giao diện điều khiển (dựa trên một biến toàn cầu).

Vì vậy, tôi nghĩ đến bản thân mình tại sao dừng lại ở đó? và bắt đầu chơi với ý tưởng rằng cùng một đêm. Ý tưởng của tôi là xây dựng một wrapper cho cả warn và error ( từ Sass 3.4 ) để giúp thư viện và khuôn khổ phát triển in loại khác nhau của tin nhắn (thông tin, gỡ lỗi, cảnh báo, báo lỗi ...) và theo dõi tất cả các bản ghi.

Thực hiện hiện tại của tôi cung cấp:

5 mức độ đăng nhập ( DEBUG , INFO , WARN , LỖI và gây tử vong );
một mức độ tối thiểu mà các logger bắt đầu in ấn;
một lịch sử của tất cả các bản ghi, có thể được in như CSS;
một API thân thiện, dễ dàng sử dụng các chức năng;
một người trợ giúp để tìm hiểu thêm về mức độ khác nhau của khai thác gỗ.

Làm thế nào nó làm việc?

Hóa ra là khá đơn giản. Chúng ta cần một biến toàn cầu giữ toàn bộ cấu hình, và một mixin phục vụ như là một wrapper cho chỉ thị giao diện điều khiển in ấn của chúng tôi.

Bởi vì chúng tôi muốn cấu hình toàn cầu của chúng tôi được tùy biến (một mức độ nào), chúng tôi quấn tuyên bố của mình trong một mixin. Đây không chỉ là thuận tiện hơn, nhưng nó cũng đẹp hơn cho người dùng cuối.

Vì vậy, thiết kế web ở Hải Phòng có một mixin, hãy gọi nó là logger chỉ là intented để được gọi là một lần, tạo ra một bản đồ toàn cầu giữ cấu hình của chúng tôi. Sau đó, chúng tôi có bao bọc của chúng tôi, đăng nhập , chấp nhận một mức độ khai thác gỗ (ví dụ WARN hoặc ERROR ) và thông tin đăng nhập như các đối số. Đó là khá nhiều đó.

Để làm cho mọi việc thuận tiện hơn cho các nhà phát triển, chúng tôi sẽ cung cấp một số chức năng tốc ký để đăng nhập cấp độ khác nhau. Ví dụ, thay vì phải gõ:


loginclude ( "ERROR" , "Không có đủ lân ở đây." );
... Chúng ta có thể có:


ERRORinclude ( "Không có đủ lân ở đây." );
Vì vậy, bạn sẽ kết thúc với một API như thế này:

// Khởi tạo một logger
// Bắt đầu bản ghi in tại `INFO` cấp .
// Điều này có nghĩa rằng các bản ghi `DEBUG` sẽ không được hiển thị.
loggerinclude ( "thông tin" );

Đăng nhập // điều.
ERRORinclude ( "Không có đủ lân ở đây." );
Chúng tôi cũng sẽ thêm một số mixins để mang lại một số tính năng bổ sung tuyệt vời:

một thông tin về in ấn mỗi cấp độ khai thác gỗ như một lời nhắc nhở;
một in ấn tất cả các bản ghi đã được đăng ký trong biên soạn hiện hành.

Xây dựng các API

Logger Constructor
Hãy bắt đầu với đầu, thì chúng tôi? Logger xây dựng . Điều này sẽ chấp nhận một tham số duy nhất: mức độ mà tại đó các logger nên bắt đầu in các bản ghi trong giao diện điều khiển.

Điều này hoàn toàn là một mô hình phổ biến cho các hệ thống thiet ke web. Ví dụ:

Nếu bạn chỉ muốn in lỗi ( ERROR và gây tử vong ), bạn muốn viết loggerinclude ("LỖI") .
Nếu bạn muốn in tất cả mọi thứ, bạn có muốn đi với loggerinclude ("ALL") , mà về cơ bản là tương tự như mức độ khai thác gỗ thấp nhất ( DEBUG ).
Nếu bạn muốn vô hiệu hóa hoàn toàn logger, bạn chạy loggerinclude ("OFF") .
Lưu ý : bạn có thể tìm thêm thông tin về mức độ khai thác gỗ trong này đề StackOverflow hoặc trong Apache các bản ghi tài liệu .

loggermixin ($ minimum- cấp ) {
  // Danh mục mức có sẵn
  $ Cấp: "DEBUG" , "thông tin" , "WARN" , "LỖI" , "Fatal" ;

  // Hãy chắc chắn rằng chuỗi cho trước là chữ hoa
  $ Tối thiểu cấp: sang chữ hoa ($ minimum- cấp );

  // Nếu mức  là `all`, đi với thấp nhất mức độ  của tất cả
  if $ minimum- mức  == "TẤT CẢ"  {
    $ Tối thiểu cấp: (mức $, thứ n 1 );
  }

  // Nếu mức độ  là không hợp lệ, tùy ý đi với `INFO`
  if không chỉ mục (mức $ "OFF" , $ minimum- cấp ) {
    $ Tối thiểu cấp: "thông tin" ;
  }

  // Tạo biến toàn cầu
  $ Logger cấu hình: (
    // Danh mục mức có sẵn
    "Cấp độ"   : $ cấp,

    // Danh sách các cấp được in với `@ error`
    "Lỗi"   : "Fatal"  "LỖI" ,

    // Tối thiểu cấp độ  (như là một chỉ số của `$ levels`) để in
    "Min"      : chỉ số ($ cấp, $ minimum- cấp ),

    // Hay không logger được kích hoạt
    "Kích hoạt"  : $ minimum- cấp  ! = "OFF" ,

    // Một bản đồ để theo dõi tất cả  các bản ghi
    "Lịch sử"  : (
      "DEBUG"  : (),
      "INFO"   : (),
      "WARN"   : (),
      "Lỗi"  : (),
      "Fatal"  : ()
    )
  !) Toàn cầu;
}
Đoạn mã trên nên chủ yếu là tự giải thích, nhưng tôi đã thêm một số ý kiến ​​để làm cho mọi thứ rõ ràng. Như bạn thấy, mixin này không làm được gì nhiều ngoại trừ tạo ra một biến toàn cầu. Không phải là xấu, phải không?

Trước khi tiếp tục, chúng ta hãy tạo ra một chức năng trợ giúp ít mà làm cho nó dễ dàng cho chúng tôi để có được một giá trị từ bản đồ toàn cầu này. Bởi vì bạn biết đấy, gõ bản đồ-get ($ logger-cấu hình, ...) không phải là điều khiển từ xa thú vị. Những gì về logger-conf (...) để thay thế?

1
2
3
function logger-conf ($ key) {
  @ trả lại bản đồ nhận được ($ logger-cấu hình, $ key);
}

Đăng nhập Wrapper

Được rồi, chúng ta hãy chuyển sang thực tế ghi chức năng có khả năng in những thứ trong giao diện điều khiển. Không chỉ cần nó ra các thông điệp được đưa ra trong giao diện điều khiển của người dùng, nhưng nó cũng nên cập nhật lịch sử để theo dõi những gì đang được đăng (có thể hoặc có thể không có ích).

Đó là âm thanh khó khăn. Cũng lo lắng không, nó sẽ được như mịn như bơ. Chúng ta đã biết mixin này nên chỉ chấp nhận hai tham số: mức độ khai thác gỗ, và tin nhắn.

mixin log ($ cấp , $ message) {
  // Hãy chắc chắn rằng mức độ  là chữ hoa
  $ Mức: đến chữ hoa ($ cấp );

  // Trừ khi đó là vô hiệu hóa, tiến hành
  if logger-conf ( "kích hoạt" ) {
    // Lấy hiện mức chỉ số 's
    // Ví dụ, `DEBUG` sẽ là` 1 `
    $ Index hiện tại cấp: chỉ số (logger-conf ( "độ" ), $ cấp );

    // Nếu `$ mức `là không hợp lệ,
    // Tùy ý rơi trở lại vào `INFO`
    if không $ index-trị dòng mức  {
      $ Mức độ: "thông tin" ;
    }

    // Cập nhật lịch sử logger
    include logger-update-lịch sử ($ cấp , $ message);

    // Cuối cùng, in  thông báo trong giao diện điều khiển
    // Nếu hiện tại mức độ  lớn hơn hoặc bằng mức tối thiểu mức độ .
    if $ index-trị dòng cấp độ  > = logger-conf ( "min" ) {
      $ In: '['  + $ mức  + '] ::'  + $ tin;

      // In nó như là `@ error` nếu nó là một lỗi cấp
      if chỉ số (logger-conf ( "lỗi" ), $ cấp ) {
        error $ in ;
      }

      // Khác sử dụng `@ warn`
      else {
        warn $ in ;
      }
    }
  }
}
Bây giờ, chúng ta cần phải đối phó với việc cập nhật lịch sử. Đây thực sự là một chút khó khăn hơn, nhưng một khi bạn đã quen với các thao tác bản đồ, nó trở nên rõ ràng hơn.

Trước khi nhìn vào mã, hãy để tôi giải thích như thế nào là làm việc lịch sử. Về cơ bản, đó là một bản đồ nơi phím là mức khai thác gỗ, và giá trị là danh sách các thư lưu lại. Ví dụ, bạn có thể có một cái gì đó như:

$ _: (
  "DEBUG" : (),
  "INFO" : (),
  "WARN" : (
    "Bạn nên chú ý đến điều này." ,
    "Điều này có thể được cải thiện."
  ),
  "Lỗi" : (
    "Một cái gì đó bị hỏng."
  ),
  "Fatal" : ()
)
Được rồi. Chúng ta hãy đi.

mixin logger-update-lịch sử ($ cấp , $ message) {
  // Lấy bản đồ lịch sử từ cấu hình
  $ Lịch sử: logger-conf ( "lịch sử" );

  // Lấy danh sách lịch sử cho hiện tại cấp độ
  $ Hiện tại cấp-lịch sử: Bản đồ-get ($ lịch sử, $ cấp );

  // Nối nhật ký tươi vào danh sách
  $ Hiện tại cấp-lịch sử: append ($ hiện tại cấp-lịch sử, $ message);

  // Tạo một biến tạm thời chứa các bản đồ lịch sử mới
  $ Logger-lịch sử: bản đồ kết hợp ($ lịch sử, ($ mức: $ hiện tại cấp-lịch sử));

  // Cập nhật bản đồ lịch sử từ cấu hình với các biến tạm thời của chúng tôi
  $ Logger cấu hình: bản đồ kết hợp ($ logger-cấu hình, ( "lịch sử" : $ logger-lịch sử)) toàn cầu;
}
Nó liên quan đến một vài dòng không thân thiện, nhưng khi bạn giải thích từng dòng riêng biệt, tất cả ý nghĩa cuối cùng.

Chúng tôi đang thực hiện ở đây, nhưng chúng tôi đã nói về việc thêm chức năng viết tắt. Hãy làm điều đó bây giờ trước khi chúng ta quên mất:

mixin gây tử vong ($ message) {đăng nhậpinclude ( "gây tử vong" , $ message); }
ERRORmixin ($ message) {đăng nhậpinclude ( "LỖI" , $ message); }
mixin WARN ($ message) {đăng nhậpinclude ( "WARN" , $ message); }
mixin INFO ($ message) {đăng nhậpinclude ( "thông tin" , $ message); }
mixin DEBUG ($ message) {đăng nhậpinclude ( "DEBUG" , $ message); }
Đó là nó. Một điều cuối cùng chúng ta có thể làm, nhưng không thực sự bắt buộc, đang thử nghiệm liệu logger đã được bao gồm trước khi cố gắng sử dụng các bản đồ toàn cầu. Không chỉ làm chúng ta ngăn chặn những sai lầm ngu ngốc, nhưng chúng tôi cũng có thể làm cho instantiation logger tùy chọn bằng cách thực hiện nó trên bay.

mixin log ($ cấp , $ message) {
  // Kiểm tra xem `biến toàn cầu logger-configuration` tồn tại.
  // Nếu không, nó có nghĩa là `logger` đã không được bao gồm,
  // Vì vậy chúng tôi bao gồm nó, tùy ý thiết lập min cấp  để `INFO`.
  if không toàn cầu-biến-tồn tại ( "logger cấu hình" ) {
    loggerinclude ( "thông tin" );
  }

  if logger-conf ( "kích hoạt" ) {
    // ...
  }
}

Thêm Extras

Chúng tôi sẽ bắt đầu với lần đầu tiên (và hữu dụng nhất) của cả hai mixins thêm, người trợ giúp. Nó thực sự là một tiện ích vào thời điểm này vì tất cả nó có phải là in một quy tắc CSS với mức độ khai thác gỗ? Để chọn, và giải thích là giá trị.

Đây là intented để cung cấp cho một số giúp đỡ để phát triển khi họ không thực sự biết được mức độ khai thác gỗ họ nên sử dụng. Nó có thể đã được viết như một bình luận nhưng tôi muốn thử điều này thingie máy in giúp đỡ.

mixin logger- giúp đỡ  {
  // Mở một `logger- mới giúp `chọn
  logger- giúp đỡ  {
    OFF: "Vô hiệu hoá các logger." ;
    Fatal: "lỗi nghiêm trọng gây ra chấm dứt sớm." ;
    LỖI: "lỗi thời gian chạy khác hoặc điều kiện bất ngờ." ;
    WARN: "Sử dụng các API phản đối, người nghèo sử dụng các API," gần như "lỗi"
    + "các tình huống khác mà không mong muốn hoặc không mong muốn, nhưng không nhất thiết phải sai chạy." ;
    INFO: "Thú vị sự kiện thời gian chạy (khởi động / tắt máy)." ;
    DEBUG: "Thông tin chi tiết về lưu lượng thông qua hệ thống." ;
  }
}
Bạn sử dụng nó như thế này:

1
include logger- giúp đỡ ;
... Và biên dịch như sau:

logger- giúp đỡ  {
  OFF: "Vô hiệu hoá các logger." ;
  Fatal: "lỗi nghiêm trọng gây ra chấm dứt sớm." ;
  LỖI: "lỗi thời gian chạy khác hoặc điều kiện bất ngờ." ;
  WARN: "Sử dụng các API phản đối, người nghèo sử dụng các API, 'gần như' lỗi, các tình huống khác mà không mong muốn hoặc không mong muốn, nhưng không nhất thiết phải sai chạy." ;
  INFO: "Thú vị sự kiện thời gian chạy (khởi động / tắt máy)." ;
  DEBUG: "Thông tin chi tiết về lưu lượng thông qua hệ thống." ;
}
Không có gì đặc biệt. Các mixin thêm khác là cách thú vị hơn. Nó sử dụng lịch sử để in tất cả các bản ghi đã được đăng ký trong quá trình biên dịch.

mixin logger-in các bản ghi {
  // Mở một mới `chọn logger-logs`
  logger bản ghi {
    // Vòng trong lịch sử
    each $ cấp , $ các bản ghi trong logger-conf ( "lịch sử" ) {
      // Kiểm tra xem hiện khai thác gỗ mức  từ vòng lặp
      // Sẽ được hiển thị hay không dựa trên mức tối thiểu mức độ
      // Và độ dài của giá trị của nó (không đăng nhập, không in ).
      if chỉ số (logger-conf ( "độ" ), $ cấp )> = logger-conf ( "min" ) và chiều dài ($ log)> 0  {
        // Vòng qua các bản ghi đăng ký và in  chúng.
        each $ đăng nhập vào bản ghi $ {
          # $ { mức }: $ đăng nhập;
        }
      }
    }
  }
}
Một lần nữa, sử dụng đơn giản:

include logger-in các bản ghi;
... Đó sẽ ra (dựa trên ví dụ trước đó của chúng tôi):

logger bản ghi {
  WARN: "Bạn nên chú ý đến điều này." ;
  WARN: "Điều này có thể được cải thiện." ;
  LỖI: "Một cái gì đó bị hỏng" ;
}

Ví dụ

// Khởi một logger mới với `INFO` là tối thiểu cấp  để đăng nhập.
// Nếu không có, nó sẽ tự động được thực hiện trên đăng nhập đầu tiên.
loggerinclude ( "thông tin" );

// Logger giúp đỡ  (tùy chọn, rõ ràng)
include logger- giúp đỡ ;

Đăng nhập // thứ
INFOinclude ( "Này, nhìn vào đó." );
INFOinclude ( "Mang trong kỳ lân!" );
include WARN ( "Dude, chú ý." );

// Điều này không được in nhưng vẫn theo dõi trong các bản ghi.
DEBUGinclude ( "Debug và các công cụ." );

// Lịch sử đầu ra (tùy chọn) đặc biệt hữu ích để gỡ lỗi
include logger-in các bản ghi;
Xem thêm: sitemap la gi?

Kết luận

Như bạn thấy, mã này là khá nhẹ cuối cùng, cộng với số lượng lớn nhất của nó là ý kiến. Tôi nghĩ rằng nó cung cấp một API sạch đẹp giúp theo dõi những gì đang được đăng nhập vào bất kỳ dự án nào.

Đây là công cụ nhằm mục đích thư viện và khuôn khổ phát triển. Nếu bạn tình cờ được một, xin vui lòng cho một thử này nếu bạn nghĩ nó có thể là hữu ích, và đưa cho tôi thông tin phản hồi của bạn.

Bài viết khác: thiet ke web tphcm
Đọc thêm..
Đã có một thời gian trong thiet ke website, tất cả các bạn phải làm để làm cho trang web của bạn qua tương thích đã được thiết lập cho họ là 960px và sửa chữa các vấn đề xuất hiện trong IE6. Ah, ngày xưa ....

Ngày nay, Internet được tạo thành từ rất nhiều bộ phận chuyển động đó là gần như chắc chắn ít nhất một số người sử dụng cuối cùng của bạn đang có ít hơn những trải nghiệm hoàn hảo, do các vấn đề có thể bạn không có ý tưởng đã xảy ra.

Chúng tôi vừa mở cửa vào một khóa học thương hiệu mới mang tên Thiết kế Web chống bom sẽ giúp bạn xua đuổi bất kỳ giả tưởng lén lút mà có thể được ẩn đi trong các góc của internet, thổi lên trang web của bạn khi bạn không tìm kiếm.

Trong bài viết này, chúng tôi sẽ được chạy qua 7 cách có thể bạn không biết trang web của bạn đang nổ, mỗi trong số đó được khéo léo xử lý trong thiết kế Web chống bom nhiên.

Nếu bạn có thể đi qua tất cả bảy trong số những điểm này và nói rằng trang web của bạn là vững chắc trên tất cả các tính Sẽ siêu ấn tượng, và bạn sẽ nhận được một ngôi sao lớn vàng lớn!

Cách thứ nhất bạn có thể không biết trang web của bạn đang bùng nổ là:

1. Web Fonts Không Rendering đúng

Bạn không thể nhận ra nó, nhưng phông chữ web của bạn thực sự có thể nhìn đáng chú ý là khác với hệ điều hành tiếp theo, ngay cả trong cùng một trình duyệt. Ví dụ, ba ảnh chụp màn hình sau đây là tất cả các trang web chính xác cùng với các thiết lập cùng một phông chữ chính xác và mã.

Việc đầu tiên được thực hiện trong Chrome trên máy Mac:


Được rồi, tất cả có vẻ là cũng có. Hãy kiểm tra cùng một trang web trên Chrome một lần nữa, lần này thông qua Ubuntu:


Hmm, đó là một cái nhìn khá khó chịu vào các nhóm đó. Bạn chỉ có thể làm ra chữ "s" và chữ "A" và "e" gần như đóng rắn. Làm thế nào về Chrome trên Windows?


Gah, nhìn vào những hiện vật! Mỗi đường cong chữ cái đều có một chút thẻ treo ra nó và tổng thể nó là hiện tượng pixel và xấu xí.

Có nhiều cách khác nhau bạn có thể bị bắt với phông chữ không nhất quán trả lại hoặc thậm chí hoàn toàn vắng mặt, trừ khi bạn có một kế hoạch để đánh giá và triển khai lựa chọn kiểu chữ của bạn.

2. Gần như ở tất cả các Rendering trên Opera Mini

Ngay cả vẽ phông chữ web tồi tệ nhất vẫn sẽ làm cho trang web của bạn trông tuyệt vời so với các trình duyệt không làm cho phông chữ web ở tất cả, chẳng hạn như Opera Mini. Và phông chữ web không phải là điều duy nhất mà Opera Mini không làm. Đây là trang web tương tự mà bạn nhìn thấy ở trên, lần này trong Opera Mini:


Như bạn có thể thấy, khá nhiều thất bại, ngắn màu cơ bản và văn bản. Opera Mini là một trình duyệt di động được thiết kế để xử lý các trang web một cách trọng lượng rất nhẹ, cho phép nó được sử dụng trên các thiết bị thông số thấp hơn và cho những người cố gắng để tiết kiệm băng thông hoặc tài nguyên hệ thống. Thật không may, một phần của đường nó có nghĩa là bằng cách không hỗ trợ một loạt các thuộc tính CSS, đặc biệt là CSS3.

Opera Mini có một cơ sở người dùng nhỏ nhưng đáng kể. Để đặt nó trong quan điểm, số liệu thống kê mà tôi đã nhìn thấy Opera Mini sử dụng khoảng một phần ba tổng số người sử dụng IE, và cao hơn so với trình duyệt Android và Opera Desktop. Đó là hoàn toàn có thể trình duyệt khó khăn nhất để wrangle ngày hôm nay, nhưng cách này hay cách khác, bạn sẽ muốn có một số loại kế hoạch cho nó.

3. Không Kế toán tài thích

Trên Firefox, khi bạn đi đến Preferences> Nội dung bạn sẽ thấy điều này:


Trên Chrome, khi bạn đi đến Cài đặt> Hiển thị cài đặt nâng cao> Web Content , bạn sẽ thấy điều này:


Cả hai tấm thiết lập này được thiết kế để cho phép người dùng điều chỉnh kích thước font chữ của trình duyệt của họ cho phù hợp với nhu cầu của họ. Những người bị khiếm thị sẽ thường sử dụng các thiết lập này để giúp họ đọc dễ dàng hơn. Họ cũng được sử dụng cho những người sử dụng của TV phòng khách của mình để duyệt web, một cái gì đó mà ngày càng trở nên phổ biến.

Đó là một thực tế rất phổ biến để thiết lập một kích thước phông chữ cơ bản cho một trang web như 14px hoặc 16px   so với html và cơ thể yếu tố. Tuy nhiên, điều này ngăn cản sở thích kích thước phông chữ của người dùng từ có hiệu lực. Nếu người dùng là người khiếm thị, không có khả năng phóng to văn bản làm cho cuộc sống khó khăn hơn nhiều, hoặc nếu kích thước phông chữ đã được thay đổi cho phù hợp với kích thước màn hình đặc biệt nó có thể làm cho văn bản rất khó đọc.

Ngày đầu đó, nếu người dùng không có một kích thước phông chữ mặc định không được lựa chọn điều quan trọng là phải có toàn bộ bố trí của bạn có thể quy mô cùng với nó. Bạn không muốn kết thúc với một bố trí đó là tất cả ra khỏi Whack bởi vì nó chỉ phù hợp với một kích thước văn bản.

Ví dụ, đây là trang web giới thiệu cùng chúng tôi một lần nữa, nhưng được xây dựng mà không có khả năng quy mô và kích thước phông chữ cơ sở thiết lập để 22px:


Tuy nhiên, với vảy xây dựng thành mã, cùng một trang web với một kích thước phông chữ được thiết lập bởi người sử dụng của 22px trông như thế này:


Bạn có thể không thể nhìn thấy những gì đang xảy ra trong các ảnh chụp màn hình ở trên là hình ảnh đã được thu nhỏ để phù hợp trong cột này. Ngay từ cái nhìn đầu tiên nó có thể trông giống như các ảnh chụp màn hình đầu tiên trong bài viết, nhưng đó chỉ vì nó đã mở rộng lên tương ứng với các thiết lập kích thước font chữ của người dùng.

Để cung cấp cho bạn một ý tưởng tốt hơn, đây là một phần của trang web ở kích thước thực của nó:


Xây dựng trang web của bạn theo cách này có nghĩa là bạn cung cấp cho người sử dụng cùng một kinh nghiệm xem có vấn đề gì ưu đãi đã được thiết lập trong trình duyệt của họ.

4. Không Lắp tất cả các màn Thoải mái

Hầu như tất cả các nhà thiết kế web đã thực hiện việc chuyển đổi từ bố trí máy tính để bàn chỉ để bao gồm hỗ trợ cho máy tính bảng và điện thoại độ phân giải phổ biến, nhưng đó vẫn chỉ là một phần của hình ảnh.

Danh sách các giải pháp của nó hôm nay dài hơn cánh tay của bạn, và sau đó chúng tôi cũng có các yếu tố mật độ điểm ảnh, một phần của màn hình hiển thị khung nhìn chiếm, và kích thước vật lý thực tế của màn hình.

Ngay bây giờ các trang web của bạn có thể được truy cập bởi người dùng trên màn hình cả hai rất nhỏ và khổng lồ, và nó gần như không thể dự đoán những gì kết hợp của độ phân giải, mật độ điểm ảnh, kích thước khung nhìn và kích thước vật lý truy cập của bạn sẽ có. A 5 "điện thoại thông minh có thể có cùng một độ phân giải chính xác là 65" truyền hình, nhưng trình duyệt một trang web trên mỗi thiết bị là rất khác nhau từ quan điểm của người sử dụng xem.

Điều đó nói rằng, nó thực sự không phải ở tất cả các khó khăn để tạo ra bố trí đó là hoàn toàn linh hoạt cho tất cả các màn hình. Với quyền thiết lập các nguyên tắc cơ bản mã bố trí của bạn tất cả các trang web của bạn sẽ bằng nhau ở nhà trưng bày bất kỳ, từ TV ở một đầu của quang phổ:


Riêng 40 "truyền hình của tôi cho thấy giới thiệu trang web của chúng tôi tại một kích thước hoàn toàn thoải mái để đọc từ chiếc ghế dài.
Để đồng hồ thông minh nhỏ bé ở đầu kia của quang phổ, chẳng hạn như thông qua các WebBrowser ứng dụng cho Sony SmartWatch 2:


Trang web được hiển thị ở kích thước hiển thị thực tế cho các ứng dụng WebBrowser Sony Smartwatch

5. ném bom Out Khi JavaScript Không

Thật dễ dàng để giả định tất cả người dùng sẽ có JavaScript chức năng mà chúng ta có thể phụ thuộc vào hoàn toàn. JavaScript có xu hướng đóng một vai trò trong hầu hết các trang web, và trong một số trường hợp hoàn toàn các ổ đĩa nội dung thông qua những thứ như các thành phần web và cung cấp mặt hàng.

Nhưng nếu JavaScript không phải là luôn hiện diện như chúng ta có thể nghĩ?

Thực tế, có rất nhiều lý do tại sao một người truy cập có thể không nhìn thấy một trang web phụ thuộc JavaScript như bạn dự định nó xuất hiện.

Một số nơi làm việc thực thi một khối rộng mạng JavaScript như là một chính sách an ninh.
Một số trình duyệt di động ngăn chặn Javascript từ thực hiện.
Một số người làm theo lời khuyên từ các cố vấn an ninh và vô hiệu hóa JavaScript ở mức độ cài đặt trình duyệt.
Một số người chạy các phần mở rộng trình duyệt chặn JavaScript theo mặc định để họ có thể thêm ngoại lệ trên cơ sở từng trường hợp. Ví dụ, phần mở rộng phổ biến nhất như vậy cho Firefox ngay bây giờ có hơn hai triệu người sử dụng.
Đôi khi chỉ JavaScript sẽ không thực hiện đúng do tải kịch bản không đầy đủ, tài nguyên hệ thống hạn chế hoặc các trường hợp bất khả kháng, có khả năng khác.
Điểm mấu chốt là ngay cả khi tỷ lệ phần trăm của những người dùng không có đầy đủ chức năng JavaScript là nhỏ, nó vẫn còn hiện tại và càng trở nên quan trọng hơn thành công hơn và cũng buôn bán các trang web của bạn.

Nếu bạn không có một kế hoạch, thay vì nếu không tuyệt vời rực phía khách hàng nhanh chóng trả lại trang web của bạn truy cập của bạn chỉ có thể thấy một loạt các HTML unrendered:


Hoặc thay vì các thành phần web tuyệt vời của bạn, truy cập của bạn có thể thấy một bố trí bị sụp đổ:

6. Tùy thuộc vào thiết bị đầu vào vắng mặt

Đối với một thời gian dài tương tác với các trang web đã gần như hoàn toàn phụ thuộc vào một con chuột, tuy nhiên bạn không còn có thể giả định một người sử dụng hoặc có một con chuột, hoặc có thể thoải mái sử dụng một con chuột. Mọi người rất thường xuyên không phải ở bàn khi quý khách đến thăm trang web của bạn, thay vì xem qua một thiết bị dựa trên cảm ứng hoặc từ chiếc ghế dài.

Điều này có nghĩa nếu trang web của bạn cần sự tương tác chuột để có được xung quanh, bạn có thể tìm thấy một số truy cập của bạn không bao giờ có thể truy cập một số phần của trang web của bạn.

Các trang web lý tưởng nên được điều hướng không chỉ không có một con chuột, mà còn đặc biệt bàn phím thân thiện. Nếu trang web của bạn có thể được điều hướng thông qua một bàn phím thì nó rất có khả năng có thể được điều hướng thông qua các thiết bị đầu vào khác như điều khiển từ xa TV hoặc giao diện điều khiển bộ điều khiển.

Thêm vào đó, những người bị khuyết tật vận động, chẳng hạn như bệnh viêm khớp hay đột quỵ ví dụ, có thể thích để điều hướng thông qua một thiết bị trợ giúp như một bàn phím phím lớn.


Bàn phím hỗ trợ. Hình ảnh lịch sự của flickr.com/photos/oregondot/6235420475
Và nói về trang web của bạn làm việc với các thiết bị trợ giúp ...

7. Không như bể Như bạn nghĩ

Đừng làm cho tôi sai, tôi biết bạn có thể đã làm điều đúng đắn và kết hợp vai trò WAI-ARIA vào trang web của bạn và cố gắng để làm cho họ như truy cập càng tốt.

Nhưng những gì tôi tìm thấy trong kinh nghiệm của tôi là bạn có thể nghĩ rằng bạn đã thực hiện trang web của bạn có thể truy cập, cho đến khi bạn thực sự cố gắng để truy cập chúng giống như cách một người khuyết tật đã đến.

Trong khoảnh khắc cố gắng để điều hướng các trang web thông qua trình đọc màn hình và bàn phím cho lần đầu tiên tôi cảm thấy khá xấu về một số các trang web mà tôi đã xây dựng trong quá khứ, các trang web Thực sự tôi đã nghĩ tôi tạo ra theo hướng dẫn của điện thoại.

Một trong những vấn đề chính tôi gặp phải như tôi đã cố gắng để màn hình đọc theo cách của mình trên internet là một thiếu tối ưu hóa vai trò bước ngoặt WAI-ARIA, giúp người dùng chuyển đến các "điểm mốc" chính trong các trang web.

Những gì tôi phát hiện ra rằng nhiều trang web cũng có nghĩa là kết hợp địa danh của WAI-ARIA, nhưng theo một cách mà tiếc là đã không đưa ra bất cứ thông tin cho người sử dụng mà có thể giúp họ tìm thấy cách của họ xung quanh các trang web:


Năm lĩnh vực chuyển hướng nhưng không có khu vực nội dung chính cho người dùng trình đọc màn hình để chuyển đến.
Một số trang web nổi tiếng khác chỉ không sử dụng bất kỳ mã truy cập vào tất cả:


Bao gồm cả vai trò mang tính bước ngoặt WAI-ARIA trong mã của bạn thực sự là siêu dễ dàng và cho biết thêm chỉ vài phút cho một dự án, nó chỉ là một vấn đề của biết làm thế nào để thêm chúng một cách đúng đắn.

Bạn sẽ ngạc nhiên cách dễ dàng là tổng thể để có một cơ sở vững chắc về khả năng tiếp cận với một vài kỹ thuật đơn giản, chẳng hạn như tối ưu hóa cấu trúc đề, kiểm soát tương phản màu sắc, cộng với một số trong những điểm chúng ta đã nói ở trên như cho phép kích thước font rộng và hỗ trợ khác nhau thiết bị đầu vào.

Làm cho trang web của bạn "chống bom"

Nếu bạn kiểm tra ra từng hạng mục trong danh sách trên và nói với chính mình, "Đã đóng đinh nó", sau đó cũng được thực hiện, bạn tuyệt vời! Như tôi đã nói, bạn sẽ có được một ngôi sao vàng lớn tuyệt vời cho là sử thi.

Tuy nhiên, nếu bạn tìm thấy chính mình đang nói "Ồ, tôi đã không nhận ra rằng" hoặc "không chắc chắn nếu tôi được vào một trong những" sau đó nó hoàn toàn có thể trang web của bạn có thể nổ ra có trên internet như chúng ta nói - và bởi " bùng nổ "Tôi không có nghĩa là trong loại tốt của cách!

Nếu có nhiều hơn một trong những điểm mà bạn đã không nhận thức được, đừng lo lắng. Nó thực sự dễ dàng hơn nhiều để "chống bom" các trang web của bạn hơn bạn nghĩ. Nó chỉ là một vấn đề được nhận thức đầy đủ các thông tin cần thiết, và tung ra một số giải pháp đơn giản.

Đó là những gì khóa học mới của chúng tôi "chống bom Thiết kế Web" sẽ trang bị cho bạn để làm. Qua mười lăm dễ làm theo các bài học video cá nhân tôi sẽ hướng dẫn bạn thông qua chính xác những gì để xem ra cho, và các bước để làm theo để "chống bom" tất cả các trang web của bạn từ giờ trở đi.
Xem thêm: Sử dụng bình luận mạng xã hội trong thiết kế web của thiết kế web hải phòng.

7 cách có thể bạn không biết trang web của bạn đang nổ

Đã có một thời gian trong thiet ke website, tất cả các bạn phải làm để làm cho trang web của bạn qua tương thích đã được thiết lập cho họ là 960px và sửa chữa các vấn đề xuất hiện trong IE6. Ah, ngày xưa ....

Ngày nay, Internet được tạo thành từ rất nhiều bộ phận chuyển động đó là gần như chắc chắn ít nhất một số người sử dụng cuối cùng của bạn đang có ít hơn những trải nghiệm hoàn hảo, do các vấn đề có thể bạn không có ý tưởng đã xảy ra.

Chúng tôi vừa mở cửa vào một khóa học thương hiệu mới mang tên Thiết kế Web chống bom sẽ giúp bạn xua đuổi bất kỳ giả tưởng lén lút mà có thể được ẩn đi trong các góc của internet, thổi lên trang web của bạn khi bạn không tìm kiếm.

Trong bài viết này, chúng tôi sẽ được chạy qua 7 cách có thể bạn không biết trang web của bạn đang nổ, mỗi trong số đó được khéo léo xử lý trong thiết kế Web chống bom nhiên.

Nếu bạn có thể đi qua tất cả bảy trong số những điểm này và nói rằng trang web của bạn là vững chắc trên tất cả các tính Sẽ siêu ấn tượng, và bạn sẽ nhận được một ngôi sao lớn vàng lớn!

Cách thứ nhất bạn có thể không biết trang web của bạn đang bùng nổ là:

1. Web Fonts Không Rendering đúng

Bạn không thể nhận ra nó, nhưng phông chữ web của bạn thực sự có thể nhìn đáng chú ý là khác với hệ điều hành tiếp theo, ngay cả trong cùng một trình duyệt. Ví dụ, ba ảnh chụp màn hình sau đây là tất cả các trang web chính xác cùng với các thiết lập cùng một phông chữ chính xác và mã.

Việc đầu tiên được thực hiện trong Chrome trên máy Mac:


Được rồi, tất cả có vẻ là cũng có. Hãy kiểm tra cùng một trang web trên Chrome một lần nữa, lần này thông qua Ubuntu:


Hmm, đó là một cái nhìn khá khó chịu vào các nhóm đó. Bạn chỉ có thể làm ra chữ "s" và chữ "A" và "e" gần như đóng rắn. Làm thế nào về Chrome trên Windows?


Gah, nhìn vào những hiện vật! Mỗi đường cong chữ cái đều có một chút thẻ treo ra nó và tổng thể nó là hiện tượng pixel và xấu xí.

Có nhiều cách khác nhau bạn có thể bị bắt với phông chữ không nhất quán trả lại hoặc thậm chí hoàn toàn vắng mặt, trừ khi bạn có một kế hoạch để đánh giá và triển khai lựa chọn kiểu chữ của bạn.

2. Gần như ở tất cả các Rendering trên Opera Mini

Ngay cả vẽ phông chữ web tồi tệ nhất vẫn sẽ làm cho trang web của bạn trông tuyệt vời so với các trình duyệt không làm cho phông chữ web ở tất cả, chẳng hạn như Opera Mini. Và phông chữ web không phải là điều duy nhất mà Opera Mini không làm. Đây là trang web tương tự mà bạn nhìn thấy ở trên, lần này trong Opera Mini:


Như bạn có thể thấy, khá nhiều thất bại, ngắn màu cơ bản và văn bản. Opera Mini là một trình duyệt di động được thiết kế để xử lý các trang web một cách trọng lượng rất nhẹ, cho phép nó được sử dụng trên các thiết bị thông số thấp hơn và cho những người cố gắng để tiết kiệm băng thông hoặc tài nguyên hệ thống. Thật không may, một phần của đường nó có nghĩa là bằng cách không hỗ trợ một loạt các thuộc tính CSS, đặc biệt là CSS3.

Opera Mini có một cơ sở người dùng nhỏ nhưng đáng kể. Để đặt nó trong quan điểm, số liệu thống kê mà tôi đã nhìn thấy Opera Mini sử dụng khoảng một phần ba tổng số người sử dụng IE, và cao hơn so với trình duyệt Android và Opera Desktop. Đó là hoàn toàn có thể trình duyệt khó khăn nhất để wrangle ngày hôm nay, nhưng cách này hay cách khác, bạn sẽ muốn có một số loại kế hoạch cho nó.

3. Không Kế toán tài thích

Trên Firefox, khi bạn đi đến Preferences> Nội dung bạn sẽ thấy điều này:


Trên Chrome, khi bạn đi đến Cài đặt> Hiển thị cài đặt nâng cao> Web Content , bạn sẽ thấy điều này:


Cả hai tấm thiết lập này được thiết kế để cho phép người dùng điều chỉnh kích thước font chữ của trình duyệt của họ cho phù hợp với nhu cầu của họ. Những người bị khiếm thị sẽ thường sử dụng các thiết lập này để giúp họ đọc dễ dàng hơn. Họ cũng được sử dụng cho những người sử dụng của TV phòng khách của mình để duyệt web, một cái gì đó mà ngày càng trở nên phổ biến.

Đó là một thực tế rất phổ biến để thiết lập một kích thước phông chữ cơ bản cho một trang web như 14px hoặc 16px   so với html và cơ thể yếu tố. Tuy nhiên, điều này ngăn cản sở thích kích thước phông chữ của người dùng từ có hiệu lực. Nếu người dùng là người khiếm thị, không có khả năng phóng to văn bản làm cho cuộc sống khó khăn hơn nhiều, hoặc nếu kích thước phông chữ đã được thay đổi cho phù hợp với kích thước màn hình đặc biệt nó có thể làm cho văn bản rất khó đọc.

Ngày đầu đó, nếu người dùng không có một kích thước phông chữ mặc định không được lựa chọn điều quan trọng là phải có toàn bộ bố trí của bạn có thể quy mô cùng với nó. Bạn không muốn kết thúc với một bố trí đó là tất cả ra khỏi Whack bởi vì nó chỉ phù hợp với một kích thước văn bản.

Ví dụ, đây là trang web giới thiệu cùng chúng tôi một lần nữa, nhưng được xây dựng mà không có khả năng quy mô và kích thước phông chữ cơ sở thiết lập để 22px:


Tuy nhiên, với vảy xây dựng thành mã, cùng một trang web với một kích thước phông chữ được thiết lập bởi người sử dụng của 22px trông như thế này:


Bạn có thể không thể nhìn thấy những gì đang xảy ra trong các ảnh chụp màn hình ở trên là hình ảnh đã được thu nhỏ để phù hợp trong cột này. Ngay từ cái nhìn đầu tiên nó có thể trông giống như các ảnh chụp màn hình đầu tiên trong bài viết, nhưng đó chỉ vì nó đã mở rộng lên tương ứng với các thiết lập kích thước font chữ của người dùng.

Để cung cấp cho bạn một ý tưởng tốt hơn, đây là một phần của trang web ở kích thước thực của nó:


Xây dựng trang web của bạn theo cách này có nghĩa là bạn cung cấp cho người sử dụng cùng một kinh nghiệm xem có vấn đề gì ưu đãi đã được thiết lập trong trình duyệt của họ.

4. Không Lắp tất cả các màn Thoải mái

Hầu như tất cả các nhà thiết kế web đã thực hiện việc chuyển đổi từ bố trí máy tính để bàn chỉ để bao gồm hỗ trợ cho máy tính bảng và điện thoại độ phân giải phổ biến, nhưng đó vẫn chỉ là một phần của hình ảnh.

Danh sách các giải pháp của nó hôm nay dài hơn cánh tay của bạn, và sau đó chúng tôi cũng có các yếu tố mật độ điểm ảnh, một phần của màn hình hiển thị khung nhìn chiếm, và kích thước vật lý thực tế của màn hình.

Ngay bây giờ các trang web của bạn có thể được truy cập bởi người dùng trên màn hình cả hai rất nhỏ và khổng lồ, và nó gần như không thể dự đoán những gì kết hợp của độ phân giải, mật độ điểm ảnh, kích thước khung nhìn và kích thước vật lý truy cập của bạn sẽ có. A 5 "điện thoại thông minh có thể có cùng một độ phân giải chính xác là 65" truyền hình, nhưng trình duyệt một trang web trên mỗi thiết bị là rất khác nhau từ quan điểm của người sử dụng xem.

Điều đó nói rằng, nó thực sự không phải ở tất cả các khó khăn để tạo ra bố trí đó là hoàn toàn linh hoạt cho tất cả các màn hình. Với quyền thiết lập các nguyên tắc cơ bản mã bố trí của bạn tất cả các trang web của bạn sẽ bằng nhau ở nhà trưng bày bất kỳ, từ TV ở một đầu của quang phổ:


Riêng 40 "truyền hình của tôi cho thấy giới thiệu trang web của chúng tôi tại một kích thước hoàn toàn thoải mái để đọc từ chiếc ghế dài.
Để đồng hồ thông minh nhỏ bé ở đầu kia của quang phổ, chẳng hạn như thông qua các WebBrowser ứng dụng cho Sony SmartWatch 2:


Trang web được hiển thị ở kích thước hiển thị thực tế cho các ứng dụng WebBrowser Sony Smartwatch

5. ném bom Out Khi JavaScript Không

Thật dễ dàng để giả định tất cả người dùng sẽ có JavaScript chức năng mà chúng ta có thể phụ thuộc vào hoàn toàn. JavaScript có xu hướng đóng một vai trò trong hầu hết các trang web, và trong một số trường hợp hoàn toàn các ổ đĩa nội dung thông qua những thứ như các thành phần web và cung cấp mặt hàng.

Nhưng nếu JavaScript không phải là luôn hiện diện như chúng ta có thể nghĩ?

Thực tế, có rất nhiều lý do tại sao một người truy cập có thể không nhìn thấy một trang web phụ thuộc JavaScript như bạn dự định nó xuất hiện.

Một số nơi làm việc thực thi một khối rộng mạng JavaScript như là một chính sách an ninh.
Một số trình duyệt di động ngăn chặn Javascript từ thực hiện.
Một số người làm theo lời khuyên từ các cố vấn an ninh và vô hiệu hóa JavaScript ở mức độ cài đặt trình duyệt.
Một số người chạy các phần mở rộng trình duyệt chặn JavaScript theo mặc định để họ có thể thêm ngoại lệ trên cơ sở từng trường hợp. Ví dụ, phần mở rộng phổ biến nhất như vậy cho Firefox ngay bây giờ có hơn hai triệu người sử dụng.
Đôi khi chỉ JavaScript sẽ không thực hiện đúng do tải kịch bản không đầy đủ, tài nguyên hệ thống hạn chế hoặc các trường hợp bất khả kháng, có khả năng khác.
Điểm mấu chốt là ngay cả khi tỷ lệ phần trăm của những người dùng không có đầy đủ chức năng JavaScript là nhỏ, nó vẫn còn hiện tại và càng trở nên quan trọng hơn thành công hơn và cũng buôn bán các trang web của bạn.

Nếu bạn không có một kế hoạch, thay vì nếu không tuyệt vời rực phía khách hàng nhanh chóng trả lại trang web của bạn truy cập của bạn chỉ có thể thấy một loạt các HTML unrendered:


Hoặc thay vì các thành phần web tuyệt vời của bạn, truy cập của bạn có thể thấy một bố trí bị sụp đổ:

6. Tùy thuộc vào thiết bị đầu vào vắng mặt

Đối với một thời gian dài tương tác với các trang web đã gần như hoàn toàn phụ thuộc vào một con chuột, tuy nhiên bạn không còn có thể giả định một người sử dụng hoặc có một con chuột, hoặc có thể thoải mái sử dụng một con chuột. Mọi người rất thường xuyên không phải ở bàn khi quý khách đến thăm trang web của bạn, thay vì xem qua một thiết bị dựa trên cảm ứng hoặc từ chiếc ghế dài.

Điều này có nghĩa nếu trang web của bạn cần sự tương tác chuột để có được xung quanh, bạn có thể tìm thấy một số truy cập của bạn không bao giờ có thể truy cập một số phần của trang web của bạn.

Các trang web lý tưởng nên được điều hướng không chỉ không có một con chuột, mà còn đặc biệt bàn phím thân thiện. Nếu trang web của bạn có thể được điều hướng thông qua một bàn phím thì nó rất có khả năng có thể được điều hướng thông qua các thiết bị đầu vào khác như điều khiển từ xa TV hoặc giao diện điều khiển bộ điều khiển.

Thêm vào đó, những người bị khuyết tật vận động, chẳng hạn như bệnh viêm khớp hay đột quỵ ví dụ, có thể thích để điều hướng thông qua một thiết bị trợ giúp như một bàn phím phím lớn.


Bàn phím hỗ trợ. Hình ảnh lịch sự của flickr.com/photos/oregondot/6235420475
Và nói về trang web của bạn làm việc với các thiết bị trợ giúp ...

7. Không như bể Như bạn nghĩ

Đừng làm cho tôi sai, tôi biết bạn có thể đã làm điều đúng đắn và kết hợp vai trò WAI-ARIA vào trang web của bạn và cố gắng để làm cho họ như truy cập càng tốt.

Nhưng những gì tôi tìm thấy trong kinh nghiệm của tôi là bạn có thể nghĩ rằng bạn đã thực hiện trang web của bạn có thể truy cập, cho đến khi bạn thực sự cố gắng để truy cập chúng giống như cách một người khuyết tật đã đến.

Trong khoảnh khắc cố gắng để điều hướng các trang web thông qua trình đọc màn hình và bàn phím cho lần đầu tiên tôi cảm thấy khá xấu về một số các trang web mà tôi đã xây dựng trong quá khứ, các trang web Thực sự tôi đã nghĩ tôi tạo ra theo hướng dẫn của điện thoại.

Một trong những vấn đề chính tôi gặp phải như tôi đã cố gắng để màn hình đọc theo cách của mình trên internet là một thiếu tối ưu hóa vai trò bước ngoặt WAI-ARIA, giúp người dùng chuyển đến các "điểm mốc" chính trong các trang web.

Những gì tôi phát hiện ra rằng nhiều trang web cũng có nghĩa là kết hợp địa danh của WAI-ARIA, nhưng theo một cách mà tiếc là đã không đưa ra bất cứ thông tin cho người sử dụng mà có thể giúp họ tìm thấy cách của họ xung quanh các trang web:


Năm lĩnh vực chuyển hướng nhưng không có khu vực nội dung chính cho người dùng trình đọc màn hình để chuyển đến.
Một số trang web nổi tiếng khác chỉ không sử dụng bất kỳ mã truy cập vào tất cả:


Bao gồm cả vai trò mang tính bước ngoặt WAI-ARIA trong mã của bạn thực sự là siêu dễ dàng và cho biết thêm chỉ vài phút cho một dự án, nó chỉ là một vấn đề của biết làm thế nào để thêm chúng một cách đúng đắn.

Bạn sẽ ngạc nhiên cách dễ dàng là tổng thể để có một cơ sở vững chắc về khả năng tiếp cận với một vài kỹ thuật đơn giản, chẳng hạn như tối ưu hóa cấu trúc đề, kiểm soát tương phản màu sắc, cộng với một số trong những điểm chúng ta đã nói ở trên như cho phép kích thước font rộng và hỗ trợ khác nhau thiết bị đầu vào.

Làm cho trang web của bạn "chống bom"

Nếu bạn kiểm tra ra từng hạng mục trong danh sách trên và nói với chính mình, "Đã đóng đinh nó", sau đó cũng được thực hiện, bạn tuyệt vời! Như tôi đã nói, bạn sẽ có được một ngôi sao vàng lớn tuyệt vời cho là sử thi.

Tuy nhiên, nếu bạn tìm thấy chính mình đang nói "Ồ, tôi đã không nhận ra rằng" hoặc "không chắc chắn nếu tôi được vào một trong những" sau đó nó hoàn toàn có thể trang web của bạn có thể nổ ra có trên internet như chúng ta nói - và bởi " bùng nổ "Tôi không có nghĩa là trong loại tốt của cách!

Nếu có nhiều hơn một trong những điểm mà bạn đã không nhận thức được, đừng lo lắng. Nó thực sự dễ dàng hơn nhiều để "chống bom" các trang web của bạn hơn bạn nghĩ. Nó chỉ là một vấn đề được nhận thức đầy đủ các thông tin cần thiết, và tung ra một số giải pháp đơn giản.

Đó là những gì khóa học mới của chúng tôi "chống bom Thiết kế Web" sẽ trang bị cho bạn để làm. Qua mười lăm dễ làm theo các bài học video cá nhân tôi sẽ hướng dẫn bạn thông qua chính xác những gì để xem ra cho, và các bước để làm theo để "chống bom" tất cả các trang web của bạn từ giờ trở đi.
Xem thêm: Sử dụng bình luận mạng xã hội trong thiết kế web của thiết kế web hải phòng.
Đọc thêm..