Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Тема посвященная stylus (https://javascript.ru/forum/offtopic/44145-tema-posvyashhennaya-stylus.html)

Maxmaxmaximus7 08.01.2014 20:26

Тема посвященная stylus
 
Я спросил то, о чем многие хотели спросить, но молчали.

https://github.com/LearnBoost/stylus/issues/1329

Gozar 08.01.2014 20:36

Цитата:

Сообщение от Maxmaxmaximus7
Я спросил то, о чем многие хотели спросить, но молчали.

Никто об этом не хотел спрашивать и это известно давно!

http://habrahabr.ru/company/yandex/blog/169415/

Maxmaxmaximus7 08.01.2014 21:02

Gozar, эта тема посвещена стайлусу, но заголовок стайлус слишком короткий по этому я удлиннил его, тут мы обсуждаем стайлус, я например хочу обсудить то что я спросил о чем все молчали, и ЭТО, по ссылке что я дал выше.

kobezzza 08.01.2014 21:02

Открою тайну: Stylus пишет чувак, который работает в Яндексе :D, также как и Nib.

По ссылке: что именно нового ты сказал? это простой миксин. Rest интерфейса для псевдоэлементов и псевдоселекторов у них нет :(

Maxmaxmaximus7 08.01.2014 21:04

kobezzza, ясно, удалите тему, заголовок вас путает, кто модеры есть переименуйте тему в "стайлус"

Maxmaxmaximus7 08.01.2014 21:05

тему можно удалять

Maxmaxmaximus7 08.01.2014 21:05

Цитата:

Сообщение от kobezzza
Rest интерфейса для псевдоэлементов и псевдоселекторов у них нет

тогда это фитчареквест

cyber 08.01.2014 22:12

Мега тупой вопрос, но как подключить стилус на клиенте не могу найти у них в репозитории

Maxmaxmaximus7 08.01.2014 22:14

а разве он так может?

cyber 08.01.2014 22:16

Цитата:

Сообщение от Maxmaxmaximus7
а разве он так может?

ну если я правильно понял то
Цитата:

Stylus is an innovative stylesheet language that compiles down to CSS. Inspired by SASS, Stylus is built with node.js and capable of running in the browser as this interactive tutorial illustrates. Edit the Stylus source on the left to see the resulting changes appear to the CSS on the right.
Кстати в ангуляре ng-click обрабатывается через делегирование?

kobezzza 08.01.2014 22:16

http://learnboost.github.io/stylus/try.html
Смотришь как сделано здесь

cyber 08.01.2014 22:25

kobezzza, я не могу у них в репозитории найти stylus.min.js, хочу найти не сжатый файл

Maxmaxmaximus7 08.01.2014 22:26

>> Vendor prefixing it is task for another tool (use autoprefixer for example).

я >> No, not true, stylus, too, need to do this. And do not just ignore this matter, cuz it is difficult to make feature that I asked..... ALL preprocessors is both autoprefixers


ВОТ ЧО ОН МОРОЗИТСЯ А!!! Мне еще и это говно форкать надо будет и переделывать? Мало мне ангуляра???

cyber 08.01.2014 22:34

Цитата:

Сообщение от Maxmaxmaximus7
говно форкать надо будет и переделывать

форкни его полностью))
Есть модуль для префиксов.

Maxmaxmaximus7 08.01.2014 22:38

Тут другое, тут именно синтаксис, наддо иметь доступ к селектору из которого вызванна функция.

kobezzza 08.01.2014 22:40

Используй
http://www.myth.io/

PS: вместо тысячи слов, которые ты там написал достаточно было сказать: нужна возможно перегрузки селекторов, для написания полифилов, также как это уже сделано с миксинами.

cyber 08.01.2014 22:47

Цитата:

Сообщение от cyber
я не могу у них в репозитории найти stylus.min.js, хочу найти не сжатый файл

не ужели ни кто не знает что где можно его скачать?
ладно фиг с ним пошел искать другой препроцессор.

monolithed 08.01.2014 22:50

Цитата:

Сообщение от Maxmaxmaximus7
Мне еще и это говно форкать надо будет и переделывать?

Префиксы это задачи отдельного инструмента типа nib

Ну или юзать Styl

Можно и самому за час накидал эти миксины:
// -*- coding: utf-8 indent-tabs-mode: nil tab-width: 4 c-basic-offset: 4 -*-

// ::selection
/*
+selection((moz webkit)) {
	color red
}
*/
selection(vendors)
	for vendor in vendors
		input::-{vendor}-selection
			{block}

	input::selection
		{block}


vendor-property(property, value, vendors)
	for vendor in vendors
		-{vendor}-{property} value

	{property} value


// transform
transform(value...)
	vendor-property('transform', value, (webkit moz o ms))

transform-origin(value...)
	vendor-property('transform-origin', value, (webkit moz o ms))

transform-style(value...)
	vendor-property('transform-style', value, (webkit moz))


// transition
transition(value...)
	vendor-property('transition', value, (webkit moz o))

transition-delay(value...)
	vendor-property('transition-delay', value, (webkit moz o))

transition-duration(value...)
	vendor-property('transition-duration', value, (webkit moz o))

transition-property(value...)
	vendor-property('transition-property', value, (webkit moz o))

transition-timing-function(value...)
	vendor-property('transition-timing-function', value, (webkit moz o))


// animation
animation-name(value...)
	vendor-property('animation-name', value, (webkit moz o ms))

animation-duration(value...)
	vendor-property('animation-duration', value, (webkit moz o ms))

animation-timing-function(value...)
	vendor-property('animation-timing-function', value, (webkit moz o ms))

animation-delay(value...)
	vendor-property('animation-delay', value, (webkit moz o ms))

animation-iteration-count(value...)
	vendor-property('animation-iteration-count', value, (webkit moz o ms))

animation-fill-mode(value...)
	vendor-property('animation-fill-mode', value, (webkit moz o ms))

animation-direction(value...)
	vendor-property('animation-direction', value, (webkit moz o ms))

animation-play-state(value...)
	vendor-property('animation-play-state', value, (webkit moz o ms))


// perspective
perspective(value...)
	vendor('perspective', value, (webkit moz))

perspective-origin(value...)
	vendor('perspective-origin', value, (webkit moz))


backface-visibility(value...)
	vendor('backface-visibility', value, (webkit moz))


background-size(value...)
	vendor-property('background-size', value, (webkit moz o))

// border
border-radius(value...)
	vendor-property('border-radius', value, (webkit moz))

border-bottom-left-radius(value...)
	vendor-property('border-bottom-left-radius', value, (webkit moz))

border-bottom-right-radius(value...)
	vendor-property('border-bottom-right-radius', value, (webkit moz))

border-top-left-radius(value...)
	vendor-property('border-top-left-radius', value, (webkit moz))

border-top-right-radius(value...)
	vendor-property('border-top-right-radius', value, (webkit moz))


// box
box-sizing(value...)
	vendor-property('box-sizing', value, (webkit moz))

box-shadow(value...)
	vendor-property('box-shadow', value, (webkit moz))


user-select(value...)
	vendor-property('user-select', value, (webkit moz ms))


text-shadow(value...)
	text-shadow value


text-overflow(value...)
	vendor-property('text-overflow', value, (o))


font-smoothing(value...)
	vendor-property('font-smoothing', value, (webkit))


appearance(value...)
	vendor-property('appearance', value, (webkit moz))


opacity(opacity)
	-ms-filter 'progid:DXImageTransform.Microsoft.Alpha(%d)' % (opacity * 100)
	opacity     opacity


gradient-to-top(value, multiple = 'none')
	background-image: -webkit-linear-gradient(bottom, split-value(value)), unquote(multiple)
	background-image: -moz-linear-gradient(bottom, split-value(value)), unquote(multiple)
	background-image: -o-linear-gradient(bottom, split-value(value)), unquote(multiple)
	background-image: -ms-linear-gradient(bottom, split-value(value)), unquote(multiple)
	background-image: linear-gradient(to top, split-value(value)), unquote(multiple)


gradient-to-bottom(value, multiple = 'none')
	background-image: -webkit-linear-gradient(top, split-value(value)), unquote(multiple)
	background-image: -moz-linear-gradient(top, split-value(value)), unquote(multiple)
	background-image: -o-linear-gradient(top, split-value(value)), unquote(multiple)
	background-image: -ms-linear-gradient(top, split-value(value)), unquote(multiple)
	background-image: linear-gradient(to bottom, split-value(value)), unquote(multiple)


gradient-top-bottom-rgba(start, end)
	background-color: end
	background-image: -webkit-gradient(linear, left top, left bottom, from(start), to(end))
	background-image: -webkit-linear-gradient(top, start, end)
	background-image:    -moz-linear-gradient(top, start, end)
	background-image:     -ms-linear-gradient(top, start, end)
	background-image:      -o-linear-gradient(top, start, end)
	background-image:         linear-gradient(to bottom, start, end)


gradient-top-bottom-rgba-without-bg(start, end)
	background-image: -webkit-gradient(linear, left top, left bottom, from(start), to(end))
	background-image: -webkit-linear-gradient(top, start, end)
	background-image:    -moz-linear-gradient(top, start, end)
	background-image:     -ms-linear-gradient(top, start, end)
	background-image:      -o-linear-gradient(top, start, end)
	background-image:         linear-gradient(to bottom, start, end)


gradient-top-bottom(start, end)
	gradient-top-bottom-rgba(start, end)
	-ms-filter: 'progid:DXImageTransform.Microsoft.gradient(startColorstr=%s, endColorstr=%s)' % (start end)

kobezzza 08.01.2014 22:50

Цитата:

Сообщение от cyber (Сообщение 291100)
не ужели ни кто не знает что где можно его скачать?
ладно фиг с ним пошел искать другой препроцессор.

Ну как, клонишь репозитарий и собираешь код. Для сборки модулей ноды под браузер есть либы.

cyber 08.01.2014 22:52

Цитата:

Сообщение от kobezzza
Ну как, клонишь репозитарий и собираешь код. Для сборки модулей ноды под браузер есть либы.

чет новенькое, пошел гуглить, спасибо :thanks:

monolithed 08.01.2014 22:52

Цитата:

Сообщение от cyber
не ужели ни кто не знает что где можно его скачать?

А это где-то заявлено? ;)

PS: затея безумная

cyber 08.01.2014 22:53

Цитата:

Сообщение от monolithed
А это где-то заявлено?

я думал если файл подключен на сайте то по сути он и в репозитории должен быть -я ошибся :)

kobezzza 08.01.2014 22:54

Цитата:

Сообщение от cyber (Сообщение 291103)
чет новенькое, пошел гуглить, спасибо :thanks:

http://browserify.org/

cyber 08.01.2014 22:59

Цитата:

Сообщение от kobezzza
http://browserify.org/

сенк, попробую когда на линукс переключусь :)

kobezzza 08.01.2014 23:02

Радуйся максимус:)
Цитата:

I have in plans something like you're trying to suggest, i.e. mapping functions to selector parts, but I'm still thinking on the syntax and stuff, it is not a trivial matter.

nerv_ 08.01.2014 23:19

Цитата:

Сообщение от kobezzza
Открою тайну: Stylus пишет чувак, который работает в Яндексе

http://javascript.ru/forum/offtopic/...tml#post288868

он сам говорит об этом на видео http://video.yandex.ru/users/ya-even...events&cid=135

Цитата:

Сообщение от Maxmaxmaximus7
Мне еще и это говно форкать надо будет и переделывать? Мало мне ангуляра???

говно здесь только ты :) Кроме того я же говорил, что ui - это просто переименованный форк ангуляра

Maxmaxmaximus7 08.01.2014 23:46

Цитата:

Сообщение от cyber
Кстати в ангуляре ng-click обрабатывается через делегирование?

эээ.. в смысле?

ну там в директиве типа

element.bind('click',function(){
    scope.$eval(attrs['ngClick'])(); // наша функция
    scope.$digest();
})



лол, чо у него баттхерд то такой))

https://github.com/LearnBoost/stylus/issues/1329

руки из жопы так пусть и скажет

Цитата:

Сообщение от kobezzza
PS: вместо тысячи слов, которые ты там написал достаточно было сказать: нужна возможно перегрузки селекторов, для написания полифилов, также как это уже сделано с миксинами.

Да, я думаю ты куда лучше обьяснил хотя я ему про то же и говорю

Цитата:

Сообщение от monolithed
Ну или юзать Styl

ДА ТЫ БЛИН ГЕНИЙ)!!! СПАСИБО)

Maxmaxmaximus7 09.01.2014 00:08

бля, да там все русские)

Maxmaxmaximus7 09.01.2014 00:10

Пасоны, а что если стайлусу дать такой мощный синтаксис чтобы можно было писать полифилы?

cyber 09.01.2014 00:18

Цитата:

Сообщение от Maxmaxmaximus7
эээ.. в смысле?

к примеру я добавил элементу арибут ng-click, клик поэтому элементу обрабатывается через всплытие, они же не навешивают обработчик на каждый элемент?

Maxmaxmaximus7 09.01.2014 00:25

я им наводку дал)) он говорит что думает над синтексом а я в этом бятька))

помогу уж ребятам так и быть:



Цитата:

Но зачем? Зачем делать синтакс? Все должно быть позрачно, НУЖНА возможность сделать так чтобы было прозрачно, НЕТ такого страха что человек чо то наворотит и не поймет где оно вызывается. ЭТО БРЕД и преддрасудки. Это не тот язык где стоит этого бояться. Прозрачный вызов функций это то что позволило вам обогнать остальные пресроцессоры и как дошло дело до селекторов вы испугались. НО ЧЕГО??? Кому не надо просто не будут это использовать!

просто описываем перегрузку для разных типов базовых селекторов и все, можно описать перегрузку для селекторов по классу, можно описать перегрузку для селекторов по псевдоэлементу и.т.п. и каждая из этих функций перегрузок должна возвращать ПОЛНУЮ СТРОКУ СЕЛЕКТОРА в которой она была вызвана. Таким образом если мы перегрузили селектор классов то при присутствии нужного нам класса мы вообще сможем всю строку селектора заменить на что-то другое.

.[^my]()// признак перегрузки
return selector() + 'ololo'
и применяем

div.mqwq // ничего не будет потому что не подошел под селектор который мы перегрузили

div.my-class // подошел и к нему применится функция

селектор заменится на div.my-classololo


cyber,

Цитата:

Сообщение от cyber
к примеру я добавил элементу арибут ng-click, клик поэтому элементу обрабатывается через всплытие, они же не навешивают обработчик на каждый элемент?

вешают, click это директива и она применяется к каждому элементу на котором обьявлена. А почему бы им собственно не вешать?

Maxmaxmaximus7 09.01.2014 00:33

великий создатель ui учит ребят уму разуму)



https://github.com/visionmedia/styl/issues/29

cyber 09.01.2014 00:35

Цитата:

Сообщение от Maxmaxmaximus7
вешают, click это директива и она применяется к каждому элементу на котором обьявлена. А почему бы им собственно не вешать?

ну по сути если много деректив то вешать на каждую отдельно будет достаточно накладно, или я ошибаюсь ?
Они получают колекцию всех элементов с атрибутом ng-click и вешают на них обработчики?

cyber 09.01.2014 00:38

Цитата:

Сообщение от Maxmaxmaximus7
великий создатель ui учит ребят уму разуму)

представляю через неделю статью на хабре " у разработчика stylus нервный срыв, разработка временно преостановлена" :)

Maxmaxmaximus7 09.01.2014 01:11

Цитата:

Сообщение от cyber
или я ошибаюсь

ошибаешься) это мелочи) и 500 киллобайт не наберется


Ебать они непробиваемые


kobezzza 09.01.2014 01:11

Цитата:

Сообщение от Maxmaxmaximus7 (Сообщение 291129)
великий создатель ui учит ребят уму разуму)



https://github.com/visionmedia/styl/issues/29

А почему ты создал issue в Styl, а не в Stylus ? Или ты и там теперь тоже буянишь:)

cyber 09.01.2014 01:14

Цитата:

Сообщение от Maxmaxmaximus7
ошибаешься) это мелочи) и 500 киллобайт не наберется

Ну у них не только ngClick, и все атрибуты они переберают??

nerv_ 09.01.2014 01:18

Цитата:

Сообщение от cyber
Ну у них не только ngClick, и все атрибуты они переберают??

не будь кросс-темным какальщиком. Задавай вопросы в правильных местах :)

cyber 09.01.2014 01:21

nerv_, я из за максимуса в ту тему не захожу:)

kobezzza 09.01.2014 01:23

Цитата:

Сообщение от Maxmaxmaximus7 (Сообщение 291138)
Ебать они непробиваемые


Просто это делать сложно и мутно, ведь селектор может быть очень сложным, а проверять его по рег экспу будет оч накладно, тем более Stylus и так не блещет скоростью.

Вот вполне частый кейз селектора

.foo {
  &_bar{a + 1}, .next {
     &:hover {
         ...
     }
  }
}


Не знаю как ты, а я вложенные селекторы с родительской ссылкой (&) юзаю постоянно.
Вот реальный пример из проекта:
.i-block {
	&_size {
		for el in (xxs 0.6) (xs 0.8) (s 0.9) (m 1) (l 1.2) (xl 1.4) (xxl 1.8) {
			&_{el[0]} {
				font-size: el[1]rem;
			}
		}
	}
}


Вот и получается, что сделать что ты хочешь конечно было бы круто, но это реально мутно и данная фича на самом деле нужна только для префиксов и уже существует rework (кстати тоже от создателя Stylus) и основанные на нём myth и styl в которых проблема решена, т.е. предлагается юзать Stylus + что-то.

Хотя, если не стараться сделать универсально, то можно было бы придумать простой и быстрый способ перегрузки не всего селектора, а его части, например тот же псевдоэлемент, но не думаю, что они пойдут на такое, т.к. по сути это будет хакерством.

PS: кстати они не договаривают, что для @keyframes полифил зашит в сам Stylus (и даже есть служебная глобальная переменная vendors), хотя по их же словам это не правильно :)
http://learnboost.github.io/stylus/docs/keyframes.html


Часовой пояс GMT +3, время: 16:11.