Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Стилизация счетчика. (https://javascript.ru/forum/dom-window/64319-stilizaciya-schetchika.html)

Spasatel801 03.08.2016 10:05

Стилизация счетчика.
 
Ребят, помогите набросать скриптик. Суть из базы через переменную показывается какое то число (например 0123456) и вот надо чтоб с помощью скрипта этому числу каждой цифре присваивался класс. вот такого вида надо:
<span class="value">
 <span class="number">0</span>
 <span class="number">1</span>
 <span class="number">2</span>
 <span class="number">3</span>
 <span class="number">4</span>
 <span class="number">5</span>
 <span class="number">6</span>
</span>

вот каждому числу присваивается класс NUMBER. Вот такая задача, помогите кто сможет. Заранее спасибо

warren buffet 03.08.2016 10:11

for(var len=chislo.length, html=[len-1], i=0; i<len; i++)
    html[i]='<span class="number">'+chislo.charAt(i)+'</span>';

span_value.innerHTML=html.join('');


А выдавать нормальный массив твой сервер не умеет?

Spasatel801 03.08.2016 10:16

Это обычный счетчик статей, он просто записывает в базу количество статей и все

warren buffet 03.08.2016 10:20

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

Spasatel801 03.08.2016 10:21

Да один и тот же класс присвоить надо. Что то не работает этот код

warren buffet 03.08.2016 10:23

Типа там отступы сделать или что? Для текстовых нод дофига стилей, но если уж совсем хочется все запихать в спаны, то хотя бы нарисуйт такой css

span.value {
 /* все про родительский элемент */
}

span.value > span {

/*
 тут стили для всех спанов первого порядка
*/

}



Чтобы не прописывать каждый раз одно и то же.

warren buffet 03.08.2016 10:26

Цитата:

Сообщение от Spasatel801
не работает этот код

Смотри в консоле ошибки, я же не проверял синтаксис, или жди когда рони подтянется, он за всех всё делает сам. )))

ЗЫ Да не нужен такой скрипт вообще. Это бред. Ты скажи какой тебе дизайен нужен для счетчика, и увидишь, что все можно сделать обычным css

Spasatel801 03.08.2016 10:27

Да стиль у меня уже нарисован полностью как я хочу..а вот реализация через скрипт не получается

Spasatel801 03.08.2016 10:28

в консоле посмотрел, не присваивает класс числам

Spasatel801 03.08.2016 10:38

Вложений: 1
Вот на картинки стиль который я хочу.
0173 -это я руками прописал вот код
<span class="value">
<span class="number">0</span>
<span class="number">1</span>
<span class="number">7</span>
<span class="number">3</span>
</span>
а 104 это переменная {%$counter.messages_all%} выводит вот ее я и хочу стилизовать

warren buffet 03.08.2016 10:38

Перехоти назначать класс каждому спану и скрипт будет таким

span.value.innerHTML = '<span>'+chislo.split().join('</span><span>')+'</span>';


Или пиши два раза

span.value.innerHTML = '<span class="number">'+chislo.split().join('</span><span class="number">')+'</span>';


Господи, какой-то бред...

Spasatel801 03.08.2016 10:41

Почему бред то?

warren buffet 03.08.2016 10:41

Я написал цикл поняв так, что тебе надо классы пронумеровать. В этом есть хоть какой-то смысл. Но пихать каждое число в спан - это бредятина.

warren buffet 03.08.2016 10:47

Цитата:

Сообщение от Spasatel801
Почему бред то?

Потому что все цифры в счетчик одинаково выглядят. Все одного класса number, стили которого тупо могут быть унаследованы от родителя, то есть span.value.

Это если бы

<span class'"number-1">1</span>
<span class'"number-4">4</span>
<span class'"number-6">5</span>
<span class'"number-8">8</span>

Тогда бредом будет дизайн, а сейчас бредом является сама конструкция.

ЗЫ Могу себе представить какой у тебя там css, при таком понимании CASCADING style sheet ))

Spasatel801 03.08.2016 10:52

ну мне и надо чтоб все цифры одного стиля были.. задача чтоб присвоить этот стиль каждой цифре.. Если есть другое какое то решение подскажи

warren buffet 03.08.2016 10:52

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

div.a-text-up h1 i:before {content:'\f102';}
	div.a-text-up h1+div {max-height:300px;}

	div.a-text-down h1 i:before {content:'\f103';}
	div.a-text-down h1+div {max-height:0px;}


То получаешь один элемент и оперируешь одним правилом.

warren buffet 03.08.2016 10:54

Цитата:

Сообщение от Spasatel801
адача чтоб присвоить этот стиль каждой цифре

Блин, это НЕ задача, это браузер сам все делает согласно устройству CSS.

Spasatel801 03.08.2016 10:54

могу показать если интересно:
.number {background-color: #5a6275;color: #e7eeff;text-shadow: 0px 4px 0px rgba(0,0,0,0.21);}
.number {-webkit-transition: background .4s;transition: background .4s;display: inline-block;vertical-align: top;padding: 0 5px;border-radius: 4px;font-size: 2.43333em;position: relative;z-index: 0;}
.number:before {content: '';position: absolute;z-index: -1;width: 100%;height: 1px;left: 0;top: 50%;}
.number:before {background-color: #a0a9c0;}

warren buffet 03.08.2016 11:00

<style>

.value {

font-weight:700;
font-size:x-small;
padding:10px;
background:#ddd;

}

.value span {

font-weight:300;
font-size:normal;
background: #eee;
letter-spacing:10px;
padding:5px 5px 5px 10px;

}
</style>

<span class="value">

Тут у нас счетчик

<span>0716262</span>

warren buffet 03.08.2016 11:02

Цитата:

Сообщение от Spasatel801
могу показать

Лучше бы не показывал. Зачем ты по несколько раз одно правило пишешь?

Я так и думал, что тебе нужны отступы между цифрами. Ну рисуй спаны, хотя можешь обойтись любым другим коротким тегом типа b или i

Spasatel801 03.08.2016 11:03

тоже ведь как вариан ты прав, так проще. Надо подумать над этим

warren buffet 03.08.2016 11:09

Ради чего оформлять каждую циферку, но если так хочется, то вот тебе.

<style>

.value {

padding:20px;
outline:1px solid red;


}

.value span {

border:1px solid #aaa;
border-radius: 3px;
background: #eee;
text-align:center;
line-height:15px;
padding: 0 3px;
margin: 0 3px;


}

</style>


<span class="value"></span>


<script>

var chislo='123653832';

document.querySelector('.value').innerHTML = '<span>'+chislo.split('').join('</span><span>')+'</span>';

</script>

Spasatel801 03.08.2016 11:18

Спасибо...то что надо

warren buffet 03.08.2016 11:26

Если ты будешь прописывать рулезы каждому блин элементу, у тебя никакой фантазии не хватит. CSS потому и C, что позволяет элементам наследовать целый ряд свойств от родителей, и по селекторам браузер сам найдет нужный элемент даже если у него нет никаких class="". Конечно тогда верстка получается сшита со стилями, но обычно все сшивают один раз и надолго. Только там, где что-то меняется, имеет смысл втыкать классы непосредственно, чтобы иерархия не колебла.

То есть например

figure.c-tmb > a > img {/* стили для картинки */}

это значит в хтмле должно быть

<figure class="c-tmb"><a><img>...

Чтобы поменять оформление img, можно или

<figure class="c-tmb mod-tmb">

и пишешь как изменить в mod-tmb, или

<div class="mod-tmb"><figure><a><img>

и в div.mod-tmb>figure a img пишешь уже чего надо.

PS Это ты бустрапов не видел, и ихними LESS и SASS ))

Spasatel801 03.08.2016 13:17

все я видел и работаю с бутстрапом и материализе.

warren buffet 03.08.2016 16:03

Цитата:

Сообщение от Spasatel801
и работаю с бутстрапом

А, вот где ты научился определять одно правило по два раза. )))


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