All streams
Search
Write a publication
Pull to refresh
0
0
standy @standy

User

Send message
Насчет скорости селектора, все браузеры разбирают селектор справа налево. В случае div.news сначала будут найдены все элементы с классом .news, а из них выберут элементы div, отсюда и потери. Хоть это и мелочи, но если так делают без надобности — выглядит глупо

«Для его переопределения достаточно воспользоваться точно таким же селектором: div.news_layout > ul > li > h3
Именно. Чтобы переопределить такой длинный селектор, придется воспользоваться селектором не меньшей длины. Из-за этого падает читаемость и такие стили трудней поддерживать.

Экономия в количестве символов в разметке это слишком слабая оптимизация. Повторяющиеся классы хорошо поддаются сжатию, экономия получается копеечной.
Такого рода оптимизациями можно заняться если у вас Google PageSpeed покажет 100 и заняться больше нечем.
Статья как-будто написана в ответ на комментарий, спасибо за перевод. Читал где-то раньше, но не мог найти.
отправлять по ctrl-enter без возможности редактировать это зло!
Пользоваться как базовым шаблоном, если начинаешь новый проект, то не сидеть вспоминать как это делается, а брать готовый.

И штуки там очень хорошие подобраны, с комментариями ентами и ссылками, можно просто дергать оттуда в старые проекты.
div.news_layout > ul > li > h3

отвратительный селектор, так лучше никогда без надобности не писать

Верстка всегда может немножко поменяться, и чем меньше таких селекторов, тем проще это будет сделать.

Учитывайте так же что лишние уточнения негативно складываются на производительности, и div.news хуже чем просто .news

Плюс ко всему, если вам понадобится в каком-то случае переопределить одно из свойств, вам придется использовать еще более специфичный селектор, как
.error div.news_layout > ul > li > h3

Семантика это конечно хорошо, но не надо на ней так зацикливаться, <h3 class="news-title"> с точки зрения семантики, ничем не хуже чем <h3>, и при этом избавляет от нескольких граблей на пути
Немного о подключении скриптов

Подключение стилей «anythingslider.css» после jquery и плагинов будет сопровождаться ощутимо заметным скачком этого самого слайдера при загрузки страницы

Все-таки стили нужно загружать до body
Все подряд называть итемы тоже не дело, такая вложенность может выйти боком в самых неожиданных местах.
А для списка новостей лучше уж использовать список, и в css будет чище
.news > li
Эти схематичные рисунки так и остались для меня загадкой, почему выбраны такие цвета, как понять где сработал :active, а где нет, и чем отличается поведение браузеров на втором и четвертом — неясно.

Но проблема в опере и ие действительно есть, и посмотреть можно на простом примере jsfiddle.net/gpCbA/33/
480 узко и 200 символов мало. Сервис хороший, но к чему такие искуственные ограничения.
Да просто с непредсказуемым сюжетом там всего 17 фильмов.

Вообще база очень мала, насколько могу судить 500-1000 фильмов.
class="fl"
class="fr


facepalm
В винде при выборе десятилетий диапазоны сделаны не просто так, год вида 198x слишком непривычен, особенно если это первое что видишь после открытия календаря.
Там же первым слайдом показывается сегодняшняя дата и есть небольшая анимация, благодаря которой показывается как мы попали на выбор десятилетий.

Но. Если ваш календарь показывать с сегодняшней даты, тогда он начнет проигрывать уишному.

Сделайте более грамотные тесты, со случайными числами из одного месяца, года, десятилетия и столетия, настройте УИшный календарь (неделя должна начинаться с понедельника, названия на русском), выводите календари в случайном порядке, тогда можно будет сравнивать показатели.
Не волнуйтесь, они исправили баг в документации: вместо
Get the first ancestor element..

получилось
Get the first element that matches the selector, beginning at the current element...
… поправка, вместо return 0;
return str1split.length - str2split.length; //если у одной из строк остался хвост, значит она больше

С первого раза без багов никогда не получается.
К чему тогда было усложнять :)
Дабы как-то оптимизировать можно прогнать регексп по массиву всего один раз перед сортировкой:
function naturalSort(stringArray) {
	function compareStrings(str1, str2) {
		var str1split = arrSplitted[str1];
		var str2split = arrSplitted[str2];
		//for(.. итд
	}
	var arrSplitted = {};
	for (var i=0, l=stringArray.length; i<l; i++ ) {
		arrSplitted[stringArray[i]] = stringArray[i].match( /([^\d]+|\d+)/ig )
	}
	return stringArray.sort(compareStrings);	
}

console.log( naturalSort( [ 'file1', 'file10', 'file2' ] ) )

После первых двух абзацев решил себя проверить, написал функцию сравнения:
function compareStrings(str1, str2) {
	var rx = /([^\d]+|\d+)/ig;
	var str1split = str1.match( rx );
	var str2split = str2.match( rx );
	for(var i=0, l=Math.min(str1split.length, str2split.length); i < l; i++) {
		var s1 = str1split[i], 
		    s2 = str2split[i];
		if (s1 === s2) continue;
		if (isNaN(+s1) || isNaN(+s2))
			return s1 > s2 ? 1 : -1;
		else
			return +s1 - s2;		
	}
	return 0;
}
console.log( [ 'file2', 'file10', 'file1' ].sort(compareStrings) );

На оптимальность так же не претендует. Подход простой, разбиваем строку на массив — строки одтельно числа отдельно ( 't123est' ~> ['t', '123', 'est'] ), и затем сравниваем каждый элемент получившихся массивов как строки и числа соотв.
вообще в хаках нет смысла если использовать эту технику
тем более с Modernizr
Оттого что scope спрятан, недостатки eval никуда не исчезают. Вы не обходитесь без него, просто заменяете на неявный вызов.
С eval, кстати, можно было сделать так:

var data = 'test';
(function(global){
  var data = 'value';
  global.eval('alert(data);'); //test
})(this);


Про window["foo" + i] писал скорее к автору. Когда был новичком, сам писал eval("foo"+i) от незнания как это делать правильно, хотя подобных статей начитался :)
Тот же eval, вид сбоку.
javascript.crockford.com/code.html ну и www.jslint.com/lint.html

Лучше бы написали как без него обходиться. До window["foo" + i] не каждый новичек допрет
Отличная статья, спасибо за перевод.
Теперь мне стало ясно зачем нужен этот ИЕшный якорь(мета-тег) с указанием на версию браузера. А в будущем он может пригодиться и другим, чтобы не плодить почти-стандатрные методы.

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Date of birth
Registered
Activity