сss (9) сss3 (14) ajax (2) css (42) drupal (7) Fix IE6 (4) font (4) html (23) javascript (22) jQuery (15) js (5) less (1) php (1) scss (1) soft (2) vue (1) webstorm (1) wordpress (1)

Адаптивная верстка (часть 1)

Расстановка блоков по всей ширине Метод построен, на изменении размера блока, можно также переделать что бы блоки были одной ширины а менялись отступы между блоками...

нтмл:

<ul class="column">
   <!-- повторяющийся элемент списка -->
   <li>
     <div class="block">
     <!-- контент -->
     </div>
   </li>
   <!-- конец повторяющегося элемента -->
</ul>


Цсс:

ul.column{
   width: 100%;
   padding: 0;
   margin: 10px 0;
   list-style: none;
}
 ul.column li {
   float: left;
   width: 200px; /* ширина колонки по умолчанию */
   padding: 0;
   margin: 5px 0;
   display: inline;
}
.block {
   height: 355px;
   font-size: 1em;
   margin-right: 10px; /* отступ между колонками */
   padding: 20px;
   background: #e3e1d5;
}


Скрипт:

function smartColumns() { //функция, подсчитывающая ширину колонок

   //сброс ширины строки до 100% после изменения размера экрана
   $("ul.column").css({ 'width' : "100%"});

   var colWrap = $("ul.column").width(); //определяем ширину строки
   var colNum = Math.floor(colWrap / 200); //определяем, сколько столбцов в 200px вместится в строку и округляем число до целого
   var colFixed = Math.floor(colWrap / colNum); //ширину строки делим на количество столбцов, округляем до целого числа, в результате получаем точную скорректированную ширину колонки

   $("ul.column").css({ 'width' : colWrap}); //ставим точную ширину строки в пикселях вместо использования % - это предотвратит возможные баги в разных браузерах при различных разрешениях экрана
   $("ul.column li").css({ 'width' : colFixed}); //ставим точную ширину измененным столбцам

}

 smartColumns(); //запускаем функцию после загрузки страницы

 $(window).resize(function () { //запускаем функцию после каждого изменения размера экрана
   smartColumns();
});

П.С. лень было набирать поэтому скопировал части кода тут

Хаки для браузеров

Хаки для браузеров
* IE6 and below *
* html #uno { color: red }


* IE7 *
*:first-child+html #dos { color: red }


* IE7, FF, Saf, Opera *
html>body #tres { color: red }


* IE8, FF, Saf, Opera (Everything but IE 6,7) *
html>/**/body #cuatro { color: red }


* Opera 9.27 and below, safari 2 *
html:first-child #cinco { color: red }


* Safari 2-3 *
html[xmlns*=""] body:last-child #seis { color: red }


* safari 3+, chrome 1+, opera9+, ff 3.5+ *
body:nth-of-type(1) #siete { color: red }


* safari 3+, chrome 1+, opera9+, ff 3.5+ *
body:first-of-type #ocho { color: red }


* saf3+, chrome1+ *
@media screen and (-webkit-min-device-pixel-ratio:0) {
#diez { color: red }
}


* iPhone / mobile webkit *
@media screen and (max-device-width: 480px) {
#veintiseis { color: red }
}


* Safari 2 - 3.1 *
html[xmlns*=""]:root #trece { color: red }


* Safari 2 - 3.1, Opera 9.25 *
*|html[xmlns*=""] #catorce { color: red }


* Everything but IE6-8 *
:root *> #quince { color: red }


* IE7 *
*+html #dieciocho { color: red }


* Firefox only. 1+ *
#veinticuatro, x:-moz-any-link { color: red }


* Firefox 3.0+ *
#veinticinco, x:-moz-any-link, x:default { color: red }


***** Attribute Hacks ******


* IE6 *
#once { _color: blue }


* IE6, IE7 *
#doce { *color: blue; * or #color: blue * }


* Everything but IE6 *
#diecisiete { color/**/: blue }


* IE6, IE7, IE8 *
#diecinueve { color: blue\9; }


* IE7, IE8 *
#veinte { color/*\**/: blue\9; }


* IE6, IE7 -- acts as an !important *
#veintesiete { color: blue !ie; } * string after ! can be anything *

/* IE8 */ #anotherone {color: blue\0/;} * must go at the END of all rules *

jQuery фиксировать блок при прокрутке окна

Блок b_fix пустой блок для определения координат низа екрана для него пишем стили:
.b_fix{
 height: 1px;
 background: transparent;
 bottom: 0;
 position: fixed;
}
а блок b_text это блок с текстом который будет ездить до определенных координат.
$(window).scroll(function() {
    var block_btn = $(".b_fix");
    var offset = block_btn.offset();
    if(offset.top >= 1490){
        $(".b_text")
             .css('position','relative')
             .css('padding-top','0');
    }
    else{
        $(".b_text")
             .css('position','fixed')
             .css('padding-top','112px');
    }
});