12.04.2011, 17:29
|
Профессор
|
|
Регистрация: 17.10.2009
Сообщений: 258
|
|
x-yuri
Тут на сайте есть пример написания анимации и пусть там не 5-10 строчек, а гдето чуть больше 20 это сути не меняет, хотя думаю, что если сесть и подумать можно и в 10ть строк написать.
|
|
12.04.2011, 17:31
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
<html>
<head>
<title>test</title>
<style type="text/css">
.block {
width: 800px;
height: 300px;
background: red;
}
</style>
</head>
<body>
<button onclick="hide()">Скрыть</button>
<div id="t" class="block"></div>
<script type="text/javascript">
function hide() {
var el = document.getElementById('t');
var count = 10, i = count, width = el.offsetWidth, height = el.offsetHeight;
(function() {
if (i--) {
el.style.width = Math.round(width * i / count) + 'px';
el.style.height = Math.round(height * i / count) + 'px';
if (typeof el.style.opacity == 'string') {
el.style.opacity = i / count;
} else {
el.style.filter = 'Alpha(opacity=' + Math.round(i / count * 100) + ')';
}
setTimeout(arguments.callee, 20);
}
})();
}
</script>
</body>
</html>
Это если уж совсем без библиотек.
|
|
12.04.2011, 17:31
|
Профессор
|
|
Регистрация: 17.10.2009
Сообщений: 258
|
|
да и что бы не создавать новую тему такой вопрос.
я погуглил 5ть мин и не нашел ничего про регулярки в jquery, их там нет и их писать, как на js? или все же, как то по другому?
|
|
12.04.2011, 17:32
|
Профессор
|
|
Регистрация: 17.10.2009
Сообщений: 258
|
|
Kolyaj
Я пользуюсь таким же примером для анимации
|
|
12.04.2011, 20:39
|
|
⊞ Развернуть
|
|
Регистрация: 11.01.2010
Сообщений: 1,810
|
|
Сообщение от x-yuri
|
почему?
|
Потому что у этого объекта есть свои методы, работать с которыми гораздо удобнее.
Сообщение от розовый слоник
|
я погуглил 5ть мин и не нашел ничего про регулярки в jquery, их там нет и их писать, как на js? или все же, как то по другому?
|
Зачем они там, когда они в языке есть?
|
|
12.04.2011, 22:02
|
Аспирант
|
|
Регистрация: 12.09.2010
Сообщений: 98
|
|
розовый слоник,
jquery - это тот же javascript, просто с добавленной библиотекой. Все, что работало на чистом javascript, будет работать и с ней, регулярные выражения в том числе. Зачем им добавочный функционал, они и так неплохо обрабатываются.
|
|
13.04.2011, 05:28
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
вот тот же код на jquery, без использования ее возможностей в плане анимации
<html>
<head>
<title>test</title>
<style type="text/css">
.block {
width: 800px;
height: 300px;
background: red;
}
</style>
</head>
<body>
<button onclick="hide()">Скрыть</button>
<div id="t" class="block"></div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
<script type="text/javascript">
function hide() {
var count = 10, i = count, width = $('#t').width(), height = $('#t').height();
(function() {
if (i--) {
$('#t').css({
'width': Math.round(width * i / count) + 'px',
'height': Math.round(height * i / count) + 'px',
'opacity': i / count
});
setTimeout(arguments.callee, 20);
}
})();
}
</script>
</body>
</html>
в данном конкретном случае изменения, может быть, небольшие. Но деталей реализации меньше. Следовательно проще понять, что эта функция делает. Если по какой-либо причине вам нужно в первую очередь видеть не что делает код, а как он это делает, это не значит, что так должно быть всегда и везде. Оба подхода имеют право на жизнь. Да, пряча реализацию, мы можем усложнить себе отладку в дальнейшем. Но это всего лишь возможность, у нее есть свои достоинства и недостатки. Где-то это уместно, где-то - нет, для кого-то подходит, для кого-то - нет. Да и просто, не прятать реализацию - значит не использовать функции. И люди делают это в разной степени, кто-то больше, кто-то - меньше
в общем, я к тому, что там 200КБ несжатого кода и куча недоплагинов, но ими можно пользоваться. И это опять же одна из возможностей, со своими достоинствами и недостатками
|
|
13.04.2011, 07:59
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от x-yuri
|
вот тот же код на jquery, без использования ее возможностей в плане анимации
|
Т.е. ради скрытия реализации opacity ты подключил 200 кб несжатого кода. Я бы просто вынес setElementStyle в отдельную функцию.
В jQuery нет инструментов для удобного наследования "классов", поэтому я не понимаю, как на нём можно создавать сложные приложения.
|
|
13.04.2011, 11:24
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
Сообщение от Kolyaj
|
Т.е. ради скрытия реализации opacity ты подключил 200 кб несжатого кода. Я бы просто вынес setElementStyle в отдельную функцию.
|
нет, конечно. В том примере я просто продемонстрировал скрытие реализации. В общем-то после того, как я попросил привести аналог, я понял, что это немного не по теме. В первую очередь, я хотел сказать, что в jquery 200КБ функционала и для нее написана куча плагинов, и про нее много написано. В большинстве случаев самописная библиотека будет хуже. Недостатки: в ее коде сложно разбираться, если что-то не работает (но зачастую можно найти альтернативный вариант), может быть заметно медленнее реализации на js. Т.е. jquery - это в первую очередь функционал, которым можно пользоваться
Сообщение от Kolyaj
|
В jQuery нет инструментов для удобного наследования "классов", поэтому я не понимаю, как на нём можно создавать сложные приложения.
|
согласен, но ведь реализация наследования - 5-10 строк на чистом js Кроме того, можно подключить реализацию классов из mootools, например. Его можно собирать, выбирая, какие части нужны, прямо на официальном сайте. Даже плагин где-то видел, который подключает классы из mootools к jquery
и еще, на чистом js проще писать неподдерживаемый код, потому что jquery - более высокоуровневая штука
|
|
13.04.2011, 11:42
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от x-yuri
|
В первую очередь, я хотел сказать, что в jquery 200КБ функционала и для нее написана куча плагинов, и про нее много написано.
|
Весь этот функционал нужен только потому, что у jQuery идеология коллекции DOM-элементов. Т.е. даже если ты выбираешь один элемент по id-шнику, ты всё равно получишь коллекцию. В результате нативные DOM-методы и свойства (большинство из которых кроссбраузерны) использовать становится неудобно. Поэтому пришлось на каждый чих писать свою имплементацию, отсюда 200кб.
А плагины вообще упоминать глупо, ибо любой скрипт это плагин к нативному JS, так что у нативного JS плагинов заведомо больше, чем у jQuery
Сообщение от x-yuri
|
но ведь реализация наследования - 5-10 строк на чистом js
|
Вот так и получается, вроде бы 200кб есть, а базовые вещи всё равно самому приходится писать.
Сообщение от x-yuri
|
и еще, на чистом js проще писать неподдерживаемый код, потому что jquery - более высокоуровневая штука
|
Неподдерживаемый код на чём угодно писать легко. На качество jQuery-кода можно посмотреть на этом форуме.
|
|
|
|