Блондинка,
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Математический маятник</title>
<style>
#a {
width: 255px;
height: 125px;
background: #cfe6cf;
border-radius: 15px/12px;
border: 1px solid #c0c0c0;
position: absolute;
}
#b {
width: 25px;
height: 100px;
display: inline-block;
position: absolute;
top: 15px;
left: 122.5px;
-webkit-transform-origin: 50% 0 ;
-moz-transform-origin: 50% 0;
-o-transform-origin: 50% 0;
-ms-transform-origin: 50% 0;
transform-origin: 50% 0;
}
#a.anim #b {
-webkit-animation: pendulum-1 1.79s linear 0s 1 normal forwards;
-moz-animation: pendulum-1 1.79s linear 0s 1 normal forwards;
-o-animation: pendulum-1 1.79s linear 0s 1 normal forwards;
-ms-animation: pendulum-1 1.79s linear 0s 1 normal forwards;
animation: pendulum-1 1.79s linear 0s 1 normal forwards;
}
#c {
width: 1px;
height: 75px;
background: #999;
position: absolute;
left: 12px;
}
#d {
width: 1px;
height: 1px;
background: transparent;
border-top: 15px solid #000080;
border-left: 15px solid transparent;
border-right: 15px solid transparent;
border-bottom: 15px solid transparent;
position: absolute;
left: 120px;
}
#U_2e {
width: 25px;
height: 25px;
display: inline-block;
border-radius: 50%;
background: -moz-radial-gradient(60% 40%, circle cover, #99f 0%, #00f 100%);
background: -webkit-radial-gradient(60% 40%, circle cover, #99f 0%, #00f 100%);
background: -o-radial-gradient(60% 40%, circle cover, #99f 0%, #00f 100%);
background: -ms-radial-gradient(60% 40%, circle cover, #99f 0%, #00f 100%);
background: radial-gradient(60% 40%, circle cover, #99f 0%, #00f 100%);
position: absolute;
top: 75px;
}
@-webkit-keyframes pendulum-1 {
0% {
-moz-transform: rotate(90deg);
-ms-transform: rotate(90deg);
-webkit-transform: rotate(90deg);
-o-transform: rotate(90deg);
transform: rotate(90deg);
} 100% {
-moz-transform: rotate(-45deg);
-ms-transform: rotate(-45deg);
-webkit-transform: rotate(-45deg);
-o-transform: rotate(-45deg);
transform: rotate(-45deg);
}
}
@-moz-keyframes pendulum-1 {
0% {
-moz-transform: rotate(90deg);
-ms-transform: rotate(90deg);
-webkit-transform: rotate(90deg);
-o-transform: rotate(90deg);
transform: rotate(90deg);
} 100% {
-moz-transform: rotate(-45deg);
-ms-transform: rotate(-45deg);
-webkit-transform: rotate(-45deg);
-o-transform: rotate(-45deg);
transform: rotate(-45deg);
}
}
@-o-keyframes pendulum-1 {
0% {
-moz-transform: rotate(90deg);
-ms-transform: rotate(90deg);
-webkit-transform: rotate(90deg);
-o-transform: rotate(90deg);
transform: rotate(90deg);
} 100% {
-moz-transform: rotate(-45deg);
-ms-transform: rotate(-45deg);
-webkit-transform: rotate(-45deg);
-o-transform: rotate(-45deg);
transform: rotate(-45deg);
}
}
@-ms-keyframes pendulum-1 {
0% {
-moz-transform: rotate(90deg);
-ms-transform: rotate(90deg);
-webkit-transform: rotate(90deg);
-o-transform: rotate(90deg);
transform: rotate(90deg);
} 100% {
-moz-transform: rotate(-45deg);
-ms-transform: rotate(-45deg);
-webkit-transform: rotate(-45deg);
-o-transform: rotate(-45deg);
transform: rotate(-45deg);
}
}
@keyframes pendulum-1 {
0% {
-moz-transform: rotate(90deg);
-ms-transform: rotate(90deg);
-webkit-transform: rotate(90deg);
-o-transform: rotate(90deg);
transform: rotate(90deg);
} 100% {
-moz-transform: rotate(-45deg);
-ms-transform: rotate(-45deg);
-webkit-transform: rotate(-45deg);
-o-transform: rotate(-45deg);
transform: rotate(-45deg);
}
}
</style>
</head>
<body>
<div id="a" class="anim">
<span id="d"></span>
<span id="b">
<span id="c"></span>
<span id="U_2e"></span>
</span>
</div>
<script>
var a = document.querySelector("#a");
a.addEventListener("click", function() {
a.classList.remove("anim");
document.documentElement.clientWidth;
a.classList.add("anim");
});
</script>
</body>
</html>
|
То самое, что я не могла найти, всё супер.
|
Цитата:
Однако свойств -ms-animation, правила @-ms-keyframes и функции -ms-radial-gradient никогда в никаком браузере не существовало! Также свойства -moz-transform, -ms-transform и -o-transform бессмысленны внутри правила @-webkit-keyframes. Также свойства -webkit-transform, -ms-transform и -o-transform бессмысленны внутри правила @-moz-keyframes. Также свойства -webkit-transform, -ms-transform и -moz-transform бессмысленны внутри правила @-o-keyframes. У вас также допущена ошибка в синтаксисе функции radial-gradient Для последних 40 версии браузеров (однако IE9+) код может выглядеть так...
#a {
width: 255px;
height: 125px;
background: #cfe6cf;
-webkit-border-radius: 15px / 12px;
border-radius: 15px / 12px;
border: 1px solid #c0c0c0;
position: absolute;
}
#b {
width: 25px;
height: 100px;
display: inline-block;
position: absolute;
top: 15px;
left: 122.5px;
-webkit-transform-origin: 50% 0;
-ms-transform-origin: 50% 0;
transform-origin: 50% 0;
}
#a.anim #b {
-webkit-animation: pendulum-1 1.79s linear 0s 1 normal forwards;
animation: pendulum-1 1.79s linear 0s 1 normal forwards;
}
#c {
width: 1px;
height: 75px;
background: #999;
position: absolute;
left: 12px;
}
#d {
width: 1px;
height: 1px;
background: transparent;
border-top: 15px solid transparent;
border-top-color: #000080;
position: absolute;
left: 120px;
}
#U_2e {
width: 25px;
height: 25px;
display: inline-block;
-webkit-border-radius: 50%;
border-radius: 50%;
background: -webkit-radial-gradient(60% 40%, circle, #99f, #00f);
background: -o-radial-gradient(60% 40%, circle, #99f, #00f);
background: radial-gradient(circle at 60% 40%, #99f, #00f);
position: absolute;
top: 75px;
}
@-webkit-keyframes pendulum-1 {
from {
-webkit-transform: rotate(90deg);
transform: rotate(90deg);
}
to {
-webkit-transform: rotate(-45deg);
transform: rotate(-45deg);
}
}
@keyframes pendulum-1 {
from {
-webkit-transform: rotate(90deg);
transform: rotate(90deg);
}
to {
-webkit-transform: rotate(-45deg);
transform: rotate(-45deg);
}
}
|
Цитата:
|
Блондинка,
можно run добавить так? [html run] ... минимальный код страницы с вашей проблемой [/html] |
laimas,
а как присвоить диву id class и стиль, а спану id и заполнить, спан текстом взятыми из контейнера <code>, и чтобы при клике на див менялись id a, b, c, d, e, a и так по кругу ?
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
div { background: #f0f0f0; border: 1px solid #999; width: 720px; padding: 15px; margin-bottom: 10px; }
.radius { background: #f0f0f0; border: 1px solid #999; width: 420px; padding: 15px; margin-bottom: 10px; }
#a { border-radius: 50px 0 0 50px; }
.radius { background: #f0f0f0; border: 1px solid #999; width: 420px; padding: 15px; margin-bottom: 10px; }
</style>
</head>
<body>
<pre><code>
<!DOCTYPE html><br>
<html><br>
<head><br>
<meta charset="utf-8"><br>
<title>border-radius</title><br>
<style><br>
.radius { background: #f0f0f0; border: 1px solid #999; width: 420px; padding: 15px; margin-bottom: 10px; }<br>
#a { border-radius: 50px 0 0 50px; }<br>
#b { border-radius: 40px 10px; }<br>
#c { border-radius: 13em/3em; }<br>
#d { border-radius: 13em 0.5em/1em 0.5em; }<br>
#e { border-radius: 8px; }<br>
</style><br>
</head><br>
<body><br>
<div class="radius"></div><br>
</body><br>
</html>
<code/></pre><br>
<div id="" class=""><span id=""></span></div><br>
<div id="a" class="radius"><span id="a1">border-radius: 50px 0 0 50px;</span></div>
Нажмите на блок чтобы посмотреть как изменится радиус углов при разных значениях.
</body>
</html>
другими словами хочу продемонстрировать как меняются свойства без изображений, как это сделано на этом сайте |
На том сайте представлены все "варианты", видны все элементы, менять имена атрибутов не нужно. Хотите также - делайте видимым каждый последующий. Хотите на одном показать изменения, изменяйте значение параметра правила стиля.
|
Значит осталось найти ответы на три вопроса, первый как присвоить стиль диву и заполнить спан а потом при клике менять, второй это как преобразовать нормальный код в мнемонику "кавычки", и третий решить вопрос с подсветкой кода.
|
Я не представляю какой демонстратор вы хотите иметь, но если имеется набор значений одного правила стиля, которые нужно показать на одном элементе, то технически это можно представить в виде списка или группы кнопок, в котором выбранное значение применяется к одному элементу без всяких изменений его класса, а тем более идентификатора.
|
ну надо 35 строчку в коде выше заменить на
<div style=""><span></span></div><br>и присвоить стиль ид'а "а" а спан заполнить свойством ид'а "а", как показано в 36 строчке, (36 строчки конечно небудет) и при клике на див поменять свойства дива и текст спана взятые у ид "b" и так по кругу, зачем кнопки если сам див может играть роль кнопки. |
Цитата:
|
laimas,
одним словом надо диву из 35 строчки придать свойства из строк 22(background: #f0f0f0; border: 1px solid #999; width: 420px; padding: 15px; margin-bottom: 10px;) и 23(border-radius: 50px 0 0 50px;) и свойства из строки 23 потом менять при клике, а также менять текст спана взятыми из строк 24, 25, 26, и 27. |
Я повторяю, я не представляю что за демонстратор вы хотите создать. Например, в моем понимании, это показать как величина значения будет влиять на конечный результат. Ну так значит нужно показать все возможное, а щелкая кнопкой показать все возможное, это не слишком удобно. Значит должно быть что-то типа:
<html>
<head>
<meta charset="utf-8">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<style>
table {
width: 100%;
}
td {
width: 20%;
padding: 10px;
}
pre {
padding: 30px 0 30px 40%;
border: 1px solid #777;
}
</style>
<script type="text/javascript">
$(function() {
$('input').on('input', function() {
var dms = $(':checked').val();
$(this).next().val(this.value);
var opt = $.map($('output'), function(e) {
return e.value + dms
}).join(' ');
$('pre').css('border-radius', opt).text(function() {
//только для примера, ибо квантификатор (?<=x)y не все браузеры поддерживают
return this.textContent.replace(/(?<=border-radius:\s)[^;]+/, opt)
})
});
});
</script>
</head>
<body>
<table>
<tr><td>Style/Value</td><td>top</td><td>right</td><td>bottom</td><td>left</td></tr>
<tr>
<td>border-radius <label><input type="radio" name="a" value="px" checked="" /> px</label> <label><input name="a" type="radio" value="%" /> %</label></td>
<td><input type="range" min="0" max="100" step="1" value="0" autocomplete="off" /> <output>0</output></td>
<td><input type="range" min="0" max="100" step="1" value="0" autocomplete="off" /> <output>0</output></td>
<td><input type="range" min="0" max="100" step="1" value="0" autocomplete="off" /> <output>0</output></td>
<td><input type="range" min="0" max="100" step="1" value="0" autocomplete="off" /> <output>0</output></td>
</tr>
<tr><td colspan="5"><pre>pre {
padding: 30px 0 30px 40%;
border: 1px solid #777;
border-radius: 0 0 0 0;
}</pre></td></tr>
</table>
</body>
</html>
Здесь можно и устанавливать значения для каждого угла, и выбирать единицы, и при этом влияние будет значительным. Можно сделать выбор единиц для каждого угла индивидуально, что так же будет иметь иной результат конечный. Кроме процентов и пикселей можно и другие единицы добавить. А вот что вы хотите и для чего, увы, я не знаю. |
laimas,
Есть страница с контейнером <code></code> в котором содержится некий код(в этом случае с 5 значениями свойства border-radius), после этого контейнера надо показать что написано в в этом коде на примере, если делать вручную, то это выглядит так <div id="a" class="radius" style="background: #f0f0f0; border: 1px solid #999; width: 420px; padding: 15px; margin-bottom: 10px; border-radius: 50px 0 0 50px;"><span id="a1">border-radius: 50px 0 0 50px;</span></div> <div id="b" class="radius" style="background: #f0f0f0; border: 1px solid #999; width: 420px; padding: 15px; margin-bottom: 10px; border-radius: 40px 10px;"><span id="b1">border-radius: 40px 10px;</span></div> <div id="c" class="radius" style="background: #f0f0f0; border: 1px solid #999; width: 420px; padding: 15px; margin-bottom: 10px; border-radius: 13em/3em;"><span id="c1">border-radius: 13em/3em;</span></div> <div id="d" class="radius" style="background: #f0f0f0; border: 1px solid #999; width: 420px; padding: 15px; margin-bottom: 10px; border-radius: 13em 0.5em/1em 0.5em;"><span id="d1">border-radius: 13em 0.5em/1em 0.5em;</span></div> <div id="e" class="radius" styly="background: #f0f0f0; border: 1px solid #999; width: 420px; padding: 15px; margin-bottom: 10px; border-radius: 8px;"><span id="e1">border-radius: 8px;</span></div> |
но чтобы избавиться от кучи ручной работы, которую можно возложить на скрипт, плюс надо это уместить в один див, при клике на который указанные значения меняются поочерёдно по кругу.
|
другими словами скрипт должен найти в контейнере <code> найти скопировать и вставить
1. стиль класса 2. стиль ид'а 3. при клике менять стиль ид'а |
Никто не знает решения?
|
Цитата:
|
В контейнере <code> пример кода, а див-демонстратор просто визуально показывает что обозначает этот код.
|
Ну так и меняйте параметры правила border-radius div демонстратору, выбирая их из массива:
var radius = ['50px 0 0 50px', '40px 10px', '13em/3em', '13em 0.5em/1em 0.5em', '8px'] |
А как создать массив, скопировав из контейнера?
|
Просто объявляем массив необходимых значений, зачем вам их копировать из контейнера, он что динамически будет изменяться или что?
<html>
<head>
<meta charset="utf-8">
<style>
.radius {
background: #f0f0f0;
border: 1px solid #999;
width: 420px;
padding: 15px;
margin-bottom: 10px;
border-radius: 50px 0 0 50px;
}
</style>
</head>
<body>
<div id="a" class="radius"><span id="a1">border-radius: 50px 0 0 50px;</span></div>
<button>Next</button>
<script>
var radius = ['50px 0 0 50px', '40px 10px', '13em/3em', '13em 0.5em/1em 0.5em', '8px'], step = 0;
document.querySelector('button').addEventListener('click', function() {
step = ++step % 5;
document.querySelector('#a').style.borderRadius = radius[step];
document.querySelector('#a1').textContent = 'border-radius: ' + radius[step];
})
</script>
</body>
</html>
|
laimas,
просто речь идет не про одну страницу, а про много страниц, и на каждой свой контейнер с кодом, и свой див-демонстратор. можно див обернуть в button? |
|
Цитата:
Запрашивает пользователь этот урок, подключается шаблон этого урока, в который передаются данные из базы для него, где параметры радиуса, это массив. Шаблонизатор помещает эти данные в определенном месте шаблона, а содержание контейнера code выводит в цикле - повторяя ваш div и span, в которые подставляет значения радиусов. Этот же шаблон имеет и CSS необходимый, и JS код обслуживающий данный урок, в котором var radius данные выводятся как json. Так это делается, если вы хотите автоматизма. |
А нельзя автоматизировать только див-демонстратор, чтобы скрипт просто копировать из контейнера и вставлялась в див?
|
Цитата:
|
laimas,
наверное не правильно сформулировала вопрос, можно ли сделать чтобы скрипт автоматически генерировал массив исходя из содержимого контейнера |
А что будут содержать ваши контейнеры и есть ли гарантия того, что контекст копирования можно однозначно определить на любой из ваших страниц, и тем более, что скопированные данные гарантированно подойдут js сценарию на любой из страниц?
Если на странице А, это будет изменение радиуса у div, а на другой это пример о градиентной заливке, то может ли один и то же скрипт найти нужное, если ему не указать конкретно что искать? А если требуется указание, то зачем нагружать сценарий ненужной работой, когда это все сразу можно задать для сценария как данные? Трудно понимание для вас "динамические страницы", ну так пишите статические, в них все сразу и определяйте, текст поясняющий код пусть так и будет текстом, а CSS, JS, это реальное, что и будет исполняться, без всякого копирования. Ну посмотрите к примеру описание документаций каких либо API, библиотек, там ведь тоже описаны методы, которые могут содержать и html разметку, но никому в голову не придет копировать это описание для реального выполнения. Это все отдельно - реальным кодом. |
Цитата:
|
Не знаю как вам еще объяснить, что выдирать что-то для создания чего-то их разметки, это бессмыслица, а не автоматизация. Пишите все как статические страницы, ну так и пишите конкретные сценарии если они необходимы и данные для них, в чем проблема?
Я таким заниматься бы не стал, а значит и советовать ничего не буду. Можно, что-то унифицировать, не id='a' и прочее, а все блоки, это class="code" которые выбираются. Но этот текст нужно еще обработать, заменив в нем все представленное как html сущности, затем из полученного создать коллекцию объектов, которыми потом и оперировать. Зачем это нужно, если проще изменять параметры одного и того же объекта имеющегося в реальности? |
Можно ли изменить 22 строчку? и добавить в неё этот стиль background: #f0f0f0; border: 1px solid #999; width: 420px; padding: 15px; margin-bottom: 10px; border-radius: 50px 0 0 50px;
и убрать кнопку чтобы сам див был кнопкой для клика Цитата:
|
Он уже определен и определены его стили через имя класса radius. Удалить кнопку.
document.querySelector('button') заменить на document.querySelector('.radius'). document.querySelector('#a') заменить на this. |
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<pre>
<div class="example" style="background: #f0f0f0; border: 1px solid #999; width: 420px; padding: 15px; margin-bottom: 10px; border-radius: 50px 0 0 50px;"><span>border-radius: 50px 0 0 50px;</span></div>
<div class="example" style="background: #f0f0f0; border: 1px solid #999; width: 420px; padding: 15px; margin-bottom: 10px; border-radius: 40px 10px;"><span>border-radius: 40px 10px;</span></div>
<div class="example" style="background: #f0f0f0; border: 1px solid #999; width: 420px; padding: 15px; margin-bottom: 10px; border-radius: 13em/3em;"><span>border-radius: 13em/3em;</span></div>
<div class="example" style="background: #f0f0f0; border: 1px solid #999; width: 420px; padding: 15px; margin-bottom: 10px; border-radius: 13em 0.5em/1em 0.5em;"><span>border-radius: 13em 0.5em/1em 0.5em;</span></div>
<div class="example" style="background: #f0f0f0; border: 1px solid #999; width: 420px; padding: 15px; margin-bottom: 10px; border-radius: 8px;"><span>border-radius: 8px;</span></div>
</pre>
<div id="run"></div>
<script>
var f = document.createElement("template"), r = document.querySelector('#run');
f.innerHTML = document.querySelector('pre').textContent.replace(/</g, '<').replace(/>/g, '>');
var o = f.content.querySelectorAll('.example'), i = 0, k = o.length;
r.appendChild(o[i]);
r.addEventListener('click', function() {
i = ++i % k;
this.innerHTML = '';
this.appendChild(o[i])
});
</script>
</body>
</html>
При условии, что все демонстрации имеют один и то же класс - example, все что необходимо выполнить содержится в них, тогда это единственный для всех страниц код обработчика. |
Цитата:
this.style.borderRadius = 'background: #f0f0f0; border: 1px solid #999; width: 420px; padding: 15px; margin-bottom: 10px;' + radius[step];тоесть уйти от внутренних стилей в head, и использовать встроенной стиль типа <div style=""> где часть стилей статична, а радиус меняется при клике. |
Цитата:
|
А строчку
Цитата:
document.querySelector('#a1').textContent = 'border-radius: ' + radius[step] + ';';
</html>
|
Блондинка,
вы же чего хотели - писать нечто, из которого скрипт должен выдирать по щелчку и выполнять, так? Вот это я и написал в посте 74, на здоровье. И если это желание обосновано тем, что вы не знаете какой сценарий в каждом конкретном случае придется писать, то один единственный скрипт для осуществления вашего желания должен опираться на один и тот же селектор для выбора ваших описаний. Для это и выбран класс exsample, не нравится, замените на иной, это не важно. |
Хоть раз пришли к общему мнению, "неважно какое название" главное что делает скрипт
|
Цитата:
|
| Часовой пояс GMT +3, время: 18:17. |