Hiển thị các bài đăng có nhãn css. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn css. Hiển thị tất cả bài đăng

Thứ Năm, 8 tháng 10, 2015

[GUIDE] Tạo accordion menu nhiều cấp bằng CSS

Bài viết hướng dẫn tạo một CSS accordion menu đơn giản nhưng hỗ trợ nhiều level của các item bên trong. Cách làm này, có thể chạy trên nhiều trình duyệt khác nhau: IE9+, Safary, Chrome, Firefox.


Trong bài hướng dẫn này, menu chỉ dùng CSS, với việc apply :checked pseudo-class selector của CSS trên các element input checkbox.
Ngoài ra, trong phần demo cũng có một phiên bản sử dụng jQuery, nếu bạn muốn có thêm các hiệu ứng animation để tăng phần sinh động.


DEMO   DOWNLOAD SOURCE

Tạo cấu trúc HTML của menu


Cấu trúc HTML của menu này khá đơn giản: đó là sử dụng 1 list các item. Nếu một item trong list, lại có các item con, thì chúng ta sử dụng một input[type=checkbox] kèm với label của nó để làm top row. Và đồng thời, chúng ta sẽ thêm .has-children class vào item đó trên list. Tất cả các item ở list lớp ngoài cùng, mà không có item con, thì chỉ cần để môt thẻ link a là được.

Chi tiết code như dưới đây:


<ul class="cd-accordion-menu">
<li class="has-children">
<input type="checkbox" name="group-1" id="group-1" checked>
<label for="group-1">Group 1</label>

<ul>
<li class="has-children">
<input type="checkbox" name ="sub-group-1" id="sub-group-1">
<label for="sub-group-1">Sub Group 1</label>

<ul>
<li><a href="#0">Image</a></li>
<li><a href="#0">Image</a></li>
<li><a href="#0">Image</a></li>
</ul>
</li>
<li><a href="#0">Image</a></li>
<li><a href="#0">Image</a></li>
</ul>
</li>

<li><a href="#0">Image</a></li>
<li><a href="#0">Image</a></li>
</ul> <!-- cd-accordion-menu -->


Thêm style CSS

Chúng ta sử dụng một cách khá đơn giản (ngày nay thường làm thế này), để phát hiện ra item được click, và show các item con của nó, chỉ bằng CSS: đó là như đã đã nói ở trên, ta dùng một checkbox input element. Với việc select class :checked của input checkbox đó, ta sẽ bắt được element đó có checked hay chưa, và tiến hành show/hide các item con của nó bằng cách change display từ "none" thành "block" (và ngược lại nếu để hide đi).

Cụ thể step-by-step từng bước một như sau:

1) Đầu tiên, chúng ta phải kiểm tra lại rằng tất cả các item lớn bên ngoài mà có chứa các item con bên trong, thì cần phải có input checkbox như đã làm sample HTML ở trên
2) Chúng ta cũng phải chắc chắn rằng, khi mà chúng ta click vào label của nó, thì checkbox đó cũng tự động được check. Nếu bạn quen thuộc với HTML rồi, thì việc này khá là đơn giản, ở input checkbox bạn cần đặt cho nó một id value, và ở label, bạn cần đặt value id của checkbox vào thuộc tính for của nó.


Dưới đây là code CSS mà chúng ta sẽ sử dụng để hiển thị Menu bằng CSS ở trạng thái ban đầu:


.cd-accordion-menu input[type=checkbox] {
/* hide native checkbox */
position: absolute;
opacity: 0;
}
.cd-accordion-menu label, .cd-accordion-menu a {
position: relative;
display: block;
padding: 18px 18px 18px 64px;
background: #4d5158;
box-shadow: inset 0 -1px #555960;
color: #ffffff;
font-size: 1.6rem;
}


Bây giờ, ta nhận thấy rằng cấu trúc HTML cho input, label, list các item đã được xếp theo thứ tự. Tiếp theo, chúng ta dùng cơ chế select :checked của CSS để thực hiện hiển thị các element con bên trong nó bằng cách thay đổi value display từ "none" thành "block";


.cd-accordion-menu ul {
/* by default hide all sub menus */
display: none;
}

.cd-accordion-menu input[type=checkbox]:checked + label + ul,
.cd-accordion-menu input[type=checkbox]:checked + label:nth-of-type(n) + ul {
/* use label:nth-of-type(n) to fix a bug on safari (<= 8.0.8) with multiple adjacent-sibling selectors*/ /* show children when item is checked */ display: block; }


Như vậy là ta đã hoàn thành một menu accordion chỉ bằng CSS.

Nếu bạn muốn menu có thêm các hiệu ứng chuyển động animation khi cụp xoè (show/hide) item con, thì chỉ việc include thêm javascript vào.

DEMO:



Bài viết được dịch dựa vào nguồn: https://codyhouse.co/gem/css-multi-level-accordion-menu/

Thứ Sáu, 13 tháng 2, 2015

Các công ty tuyển dụng cần gì ở lập trình viên PHP?

Để tuyển dụng được một lập trình viên tốt, thì nhà tuyển dụng thường đặt khá nhiều kỳ vọng vào các kỹ năng mà lập trình viên đã tự trang bị được cho mình, chẳng hạn như: làm việc nhóm, độc lập, tư duy tốt, tự tìm tòi và học hỏi, nghiên cứu nhanh,...
Trong bài này, chỉ bàn riêng về chuyên môn trong lĩnh vực PHP, các nhà tuyển dụng cần gì ở một lập trình viên? Bạn đã chuẩn bị được những kỹ năng gì để đi xin việc làm một lập trình viên PHP.


Những kỹ năng bắt buộc

Những kỹ năng dưới đây là bắt buộc khi bạn làm một lập trình viên PHP.

Bắt buộc 1: Nắm chắc kiến thức cơ bản về lập trình web với HTML, CSS (và cả JS thì là tốt nhất)

PHP là để lập trình web, mà HTML+CSS(+JS) là bộ cơ sở đi với nhau, và do đó, bạn muốn làm web mà không biết HTML+CSS thì chắc chắn là không thể được. Thực tế, với HTML+CSS bạn không cần phải biết tường tận mọi ngõ ngách, không cần phải siêu đẳng, thế nhưng những thứ thường gặp bạn cần phải nắm rõ.
Ví dụ:
- Với HTML bạn cần hiểu biết trong đầu về thẻ là gì, các thẻ thường làm có meta, div, các thẻ h, span, p, a, form, ...
- Với CSS bạn cần hiểu biết về: border, padding, margin, float, overflow, z-index, background, color, :hover,...
- Với JS: bạn có thể làm chưa quen, nhưng bạn cũng cần phải đọc được các câu lệnh JS đơn giản để: show/hide element, get/change/remove css class,...

Những thứ trên là các kiến thức rất cơ bản, nếu bạn không nắm chắc, hãy kiếm những quyển sách rất đơn giản và học lại, làm theo những bước trong sách hướng dẫn, thử thay đổi các tham số để hiểu rõ hơn về việc mình thực hành.

Nhấn mạnh lại một điều nữa để bạn hiểu rõ, Không nắm được HTML+CSS, đừng nghĩ đến chuyện làm WEB, và cũng đừng nghĩ đến chuyện làm PHP.


Bắt buộc 2: Về ngôn ngữ PHP

Bạn làm về PHP, rõ ràng bạn phải hiểu được cơ bản về nó. Cách bạn đặt biến như nào, đặt hàm như nào, làm thế nào để gọi,... rồi những vấn đề cơ bản như: hiển thị một chuỗi lên HTML bằng PHP như thế nào, PHP kết nối đến DB như là MySQL ra làm sao,... Bạn có thể quên quên nhớ nhớ, nhưng khi đưa code có sẵn ra bạn phải đọc được và hiểu được, rồi mới tính đến chuyện tự tay code được. Bạn đọc hiểu code có sẵn không được thì làm sao mà code được.

Những kỹ năng cạnh tranh, làm lợi thế

Nếu bạn tu luyện được một trong các kỹ năng dưới đây, ngoài việc tăng khả năng kiếm được một công việc như ý về PHP, bạn còn có lợi thế nhất định khi đàm phán lương bổng.

Thành thạo một, hoặc nhiều thì càng tốt, các PHP framework

Với cộng đồng PHP lớn mạnh, cũng như vị trí của bộ sậu PHP-MySQL trong thế giới web, thì việc mà có vô số các sản phẩm opensource, hoặc có phí là điều dễ hiểu. Tương tự đó, rất ít các công ty phát triển web làm từ đầu sản phẩm của mình, mà thường dựa vào một nền tảng framework nào đó để tuỳ biến. Nhất là các công ty ở Việt Nam, có rất ít công ty bỏ tiền ra đầu tư làm từ đầu sản phẩm của mình. Do đó, bạn nắm được nhiều framework thì bạn lại càng có nhiều lợi thế hơn khi xin việc cũng như khi đàm phán lương bổng.

Các framework đáng chú mà các bạn cần bỏ thời gian nghiên cứu, làm thử gồm:
- Về CMS: Wordpress, Joomla, CakePHP, Yii, Laravel, ...
- Về eCommercer: Magento, OpenCart, Shopify,...
- Ngoài ra, còn có một số khác, mặc dù ít gặp ở VN nhưng không phải là không cần: CRM như Sugar hoặc Tiger,...

Thành thạo làm Responsive



Với thời điểm bùng nổ smartphone, tablet iOS, Android như hiện tại, việc có thêm kỹ năng làm web Responsive là cực kỳ quan trọng. Các website lớn, hoặc chuyên nghiệp sẽ yêu cầu điều này. Việc học cách để làm responsive này cũng không tốn nhiều thời gian, vì cũng như PHP, hiện có rất nhiều framework giúp cho các bạn về việc này. Và do đó, tôi recommend, hoặc xúi các bạn cũng có thể nói là vậy, nên học thêm Bootstrap, sau đó là Foundation framework. Ngoài ra cũng nên dành thời gian tìm hiểu thêm việc ứng dụng HTML5, các hiệu ứng CSS mới,...

Thành thạo các Javascript framework, tối đặc biệt JQuery

Tương tự với các quan điểm trên, bạn cũng nên nắm được vững cách sử dụng JQuery. Tài liệu hướng dẫn rõ ràng dễ hiểu, các biện pháp giải quyết khó khăn bằng JQuery nhiều vô kể. Và cũng có vô số người sẵn sàng giúp bạn trên StackOverflow.


Một số kỹ năng, hoặc hiểu biết khác

Ngoài những điểm đề cập trên, thật tuyệt vời nếu nhà tuyển dụng cũng biết được bạn thành thạo, hoặc đã từng làm, hoặc có hiểu biết, hoặc thậm chí là có nghe nói đến một số các thứ sau đây:
- Kỹ thuật về AJAX với JQuery.
- JSON
- Restful Webservices
- Tương tác với web API, request header, response header
- AngularJS
- Thành thạo các tool như Sublime Text, Notepad++, IntelliJ IDEA,...
- Cách deploy một web PHP lên hosting bằng FTP, CPanel,...


Bạn cũng nên theo dõi blog này thường xuyên, tôi sẽ post các bài hướng dẫn lập trình từ cơ bản đến phức tạp trên một số lĩnh vực như web, android, ios...