Заметки


«Аккордеон» для сайта без JavaScript

Продолжая тему всякий интерактивных и не очень элементов для сайта, обратим взор на «аккордеон». Это на самом деле хороший способ уместить большое количество информации на маленькой площади.

Давайте сделаем наш аккордеон без Javascript на чистом CSS. Как всегда, сначала ДЕМО.

HTML:

    <div class="wrapper clearfix">
        <ul class="accordion clearfix">
            <li>
                <input type="radio" name="accordion" checked="checked" id="id1">
                <label for="id1">Option 1</label>

                <div class="content">
                    1 Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
                </div>
            </li>


            <li>
                <input type="radio" name="accordion" id="id2">
                <label for="id2">Option 2</label>

                <div class="content">
                    2 Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
                </div>
            </li>


            <li>
                <input type="radio" name="accordion" id="id3">
                <label for="id3">Option 3</label>

                <div class="content">
                    3 Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
                </div>
            </li>
        </ul>
    </div>

Итак, у нас список ul.accordion с тремя элементами. У каждого элемента есть input[type="radio"] для определения отображать контент или нет; label, где мы храним заголовок и div.content с нашим текстом и/или графикой.

CSS:

.wrapper {
    width: 100%;
    min-width: 320px;
}

.clearfix:before, .clearfix:after {
    display: table;
    content: ' ';
}

.accordion {
    list-style: none;
    padding: 0;
    margin: 0;
    display: block;
    position: relative;
}

.accordion li {
    display: block;
}

.accordion li label {
    padding: 10px;
    background-color: #eee;
    display: block;
    font-weight: 700;
    cursor: pointer;
}

.accordion li .content {
    display: none;
    padding: 10px;
}

.accordion li input {
    display: none;
}

.accordion li input:checked ~ label {
    background-color: #fff;
}
.accordion li input:checked ~ .content {
    display: block;
}

Наши инпуты делаем невидимыми, а с помощью input:checked ~ .content показываем только тот контент, input, для которого выбран.

И еще раз ДЕМО.

Читать 3 мин | 27.10.2014 20:15

 

Создаем Twitter Cards для сайта

Уже с давних пор, при добавлении ссылки на пост в моем блоге в сообщение твиттера, в приложении сервиса или у них на сайте можно увидеть вот такую карточку статьи:

Называется это Twitter Card и делается это очень легко с помощью нескольких мета-тегов на странице:

<meta name="twitter:site" content="@mobilaname">
<meta name="twitter:creator" content="@ashorror">
<meta name="twitter:card" content="summary">
<meta name="twitter:url" content="http://blog.mobila.name/post/543cf10b11d0c/">
<meta name="twitter:title" content="Украина, Херсонская область">
<meta name="twitter:description" content="Вчера утром поездом выехал в Украину. Первый пункт назначения - Новая Каховка.Поезд примчал меня в Мелитополь. Сюда едут те, кто потом едет на отдых на Азовское море. Население Мелитополя - 150 тысяч человек.">
<meta name="twitter:image" content="http://ic.pics.livejournal.com/larchanka/20861394/31955/original.jpg">

Давайте разберем их все.

  • twitter:site - аккаунт сайта в твиттере, включая '@'
  • twitter:creator - аккаунт автора в твиттере, включая '@'
  • twitter:card - Тип карточки: summary, photo или video.
  • twitter:url - Адрес страницы в интернете.
  • twitter:title - Заголовок статьи.
  • twitter:description - Описание статьи до 200 символов.
  • twitter:image - Изображение для карточки.

Когда все эти теги уже вставлены на страницы вашего сайта, самое время подать заявку для вашего домена. Подтверждение заявки – символический процесс и проходит почти сразу. Сделать этом можно на специальной странице.

Читать 1 мин | 14.10.2014 17:42

 

Настоящий размер изображения в JavaScript

Иногда в JavaScript необходимо получить размер изображения. И все бы неплохо, но в связи со всякими Retina-дисплеями и другими экранами с высокой плотностью пикселей, изображения на страницу ставят большого размера, а потом их уменьшают. В итоге простыми методами получить размер становится тяжеловато.

Вот способ узнать необходимые параметры с помошью неизменяемых свойств naturalWidth и naturalHeight.

var src="http://path.to/image.jpg",
    img = new Image();

img.src = src;

img.onload = function() {
    console.log('Ширина изображения: %s пикселей', this.naturalWidth);
    console.log('Высота изображения: %s пикселей', this.naturalHeight);
}
Читать 24 сек | 07.10.2014 00:13

 

Где воровали свои идеи дизайнера советского автопрома

Мысли о том, что в СССР умели делать красивые машины пропадают вместе с пониманием, кто и когда придумал этот дизайн на самом деле.

Продолжение

Читать 9 сек | 29.09.2014 11:56

 

День открытых дверей на БелАЗе

Почему-то пропустил и не съездил на день открытых дверей на производственных мощностях завода БелАЗ. Очень жаль. Зато вот снимки имеются:

Продолжение

Читать 1 мин | 28.09.2014 15:09