Общетематический форум.: Улучшаем тэг select с Jquery - Общетематический форум.

Перейти к содержимому

Toggle shoutbox

По всем вопросам писать ICQ 40090600 либо admin@power-wmr.com
Animal  : (09 June 2011 - 04:08 PM) Это всё равно, что я сейчас пойду на заборах писать "Граф - ..." Смысл-то какой?
Graf  : (09 June 2011 - 04:10 PM) :ag: :ae:
EkaEka  : (09 June 2011 - 04:24 PM) тигра, :aj:
Animal  : (09 June 2011 - 04:25 PM) :wub:
Graf  : (09 June 2011 - 04:25 PM) Привет Ека)))
EkaEka  : (09 June 2011 - 04:36 PM) привет, граф
EkaEka  : (09 June 2011 - 04:37 PM) Тигра, котлеток хочешь?
Animal  : (09 June 2011 - 04:37 PM) Хочу
EkaEka  : (09 June 2011 - 04:37 PM) ну так лови, пока горяченькие)))
Animal  : (09 June 2011 - 04:38 PM) :ac:
EkaEka  : (09 June 2011 - 04:39 PM) что с лицом, киса?
Animal  : (09 June 2011 - 04:42 PM) А зачем ты дразнишь бедного голодного тигрёнка?
EkaEka  : (09 June 2011 - 04:42 PM) бееедненький мой, голоооодненький)))
Graf  : (09 June 2011 - 04:43 PM) Ооооойййййй. Приласкали наконец то за целый день... Разжалобил)
EkaEka  : (09 June 2011 - 04:43 PM) за ушком почесать?
Animal  : (09 June 2011 - 04:44 PM) Да. А почему только за ушком?
Pozitiv4ik  : (09 June 2011 - 05:02 PM) :blink:
Animal  : (09 June 2011 - 05:11 PM) Таня, что-то не так?
Animal  : (09 June 2011 - 05:12 PM) Ты тоже хочешь почесать тигрёнка за ушком?
Graf  : (09 June 2011 - 05:17 PM) :ag:
Изменение размера пространство чата

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Улучшаем тэг select с Jquery

#1 Пользователь офлайн   snakizator 

  • Пользователь
    • Группа: Пользователи
    • Баланс : 0.54$
    • Сообщений: 27
    • Регистрация: 12 March 11

    Отправлено 16 March 2011 - 14:05

    Когда дело доходит до организации эффективно JQuery плагин, один из лучших вариантов. Есть много преимуществ в этом - ваш код становится легче модифицировать и повторяющиеся задачи решаются естественным путем. Это также повышает скорость, с которой вы разрабатываете, так как плагин организации способствует повторному использованию кода. Сегодня мы сделаем наши выпадающие списки выбора красивей и даже добавим к ним картинку, что бы пользователь имел больше информации о вашем товаре.

    Изображение

    И так начнем.

    HTML код
    <form method="post" action="">
    <select name="fancySelect" class="makeMeFancy">
    <option value="0" selected="selected" data-skip="1">Выберите продукт</option>
    <option  value="1" data-icon="img/products/js.png" data-html-text="javascript +  jQuery для начинающих в видеоформате&lt;i&gt;посмотреть  видеопрезентацию&lt;/i&gt;">javascript + jQuery для  начинающих в видеоформате</option>
    <option value="2"  data-icon="img/products/php.png" data-html-text="PHP + MySQL для  начинающих&lt;i&gt;купить&lt;/i&gt;">PHP + MySQL для  начинающих</option>
    <option value="3"  data-icon="img/products/wp.png" data-html-text="WordPress -  профессиональный блог за один  день&lt;i&gt;скачать&lt;/i&gt;">WordPress -  профессиональный блог за один день</option>
    <option  value="4" data-icon="img/products/joomla.png" data-html-text="Joomla -  профессиональный сайт за один  день&lt;i&gt;купить&lt;/i&gt;">Joomla -  профессиональный сайт за один день</option>
            </select>
        </form>


    Картинка для пункта меню будет передаваться через атрибут data-icon="сдесь адрес картинки"
    Описание пункта через атрибут data-html-text="тут описание"

    CSS стиль
    Создадим файл css/styles.css и пропишем в него:
    #page{
        width:490px;
        margin:50px auto;
    }
    
    #page h1{
        font-weight:normal;
        text-indent:-99999px;
        overflow:hidden;
        background:url('../img/your_product.png') no-repeat;
        width:490px;
        height:36px;
    }
    
    #page form{
        margin:20px auto;
        width:460px;
    }
    
    .tzSelect{
        
        /* Контейнер для нового элемента select */
        
        height:34px;
        display:inline-block;
        min-width:460px;
        position:relative;
        
        /* Предварительная загрузка фонового изображения для выпадающих пунктов */
        background:url("../img/dropdown_slice.png") no-repeat -99999px;
    }
    
    .tzSelect .selectBox{
        position:absolute;
        
        height:100%;
        width:100%;
        
        /* Установка шрифта */
        
        font:13px/34px "Lucida Sans Unicode", "Lucida Grande", sans-serif;
        text-align:center;
        text-shadow:1px 1px 0 #EEEEEE;
        color:#666666;
    
        /* Использование множественных фонов CSS3 */
        
        background:url('../img/select_slice.png') repeat-x #ddd;
        background-image:url('../img/select_slice.png'),url('..
    /img/select_slice.png'),url('../img/select_slice.png'),url('
    ../img/select_slice.png');
        background-position:0 -136px, right -204px, 50% -68px, 0 0;
        background-repeat: no-repeat, no-repeat, no-repeat, repeat-x;
        
        cursor:pointer;
        
        -moz-border-radius:3px;
        -webkit-border-radius:3px;
        border-radius:3px;
    }
    
    .tzSelect .selectBox:hover,
    .tzSelect .selectBox.expanded{
        background-position:0 -170px, right -238px, 50% -102px, 0 -34px;
        color:#2c5667;
        text-shadow:1px 1px 0 #9bc2d0;
    }
    .tzSelect .dropDown{
        position:absolute;
        top:40px;
        left:0;
        width:100%;
        border:1px solid #32333b;
        border-width:0 1px 1px;
        list-style:none;
        
        -moz-box-sizing:border-box;
        -webkit-box-sizing:border-box;
        box-sizing:border-box;
        
        -moz-box-shadow:0 0 4px #111;
        -webkit-box-shadow:0 0 4px #111;
        box-shadow:0 0 4px #111;
    }
    
    
    .tzSelect li{
        height:85px;
        cursor:pointer;
        position:relative;
        
        /* Использование множественных фонов CSS3 */
        
        background:url('../img/dropdown_slice.png') repeat-x #222;
        background-image:url('../img/dropdown_slice.png'),url('..
    /img/dropdown_slice.png'),url('../img/dropdown_slice.png');
        background-position: 50% -171px, 0 -85px, 0 0;
        background-repeat: no-repeat, no-repeat, repeat-x;
    }
    
    .tzSelect li:hover{
        background-position: 50% -256px, 0 -85px, 0 0;
    }
    
    .tzSelect li span{
        left:88px;
        position:absolute;
        top:27px;
    }
    
    .tzSelect li i{
        color:#999999;
        display:block;
        font-size:12px;
    }
    
    .tzSelect li img{
        left:9px;
        position:absolute;
        top:13px;
    }




    JS скрипт
    Создаем js/script.js и прописуем:
    $(document).ready(function(){
        
        // Элемент select, который будет замещаться:
        var select = $('select.makeMeFancy');
    
        var selectBoxContainer = $('<div>',{
            width        : select.outerWidth(),
            className    : 'tzSelect',
            html        : '<div class="selectBox"></div>'
        });
    
        var dropDown = $('<ul>',{className:'dropDown'});
        var selectBox = selectBoxContainer.find('.selectBox');
        
        // Цикл по оригинальному элементу select
        
        select.find('option').each(function(i){
            var option = $(this);
            
            if(i==select.attr('selectedIndex')){
                selectBox.html(option.text());
            }
            
            // Так как используется jQuery 1.4.3, то мы можем получить доступ 
            // к атрибутам данных HTML5 с помощью метода data().
            
            if(option.data('skip')){
                return true;
            }
            
            // Создаем выпадающий пункт в соответствии
            // с иконкой данных и атрибутами HTML5 данных:
            
            var li = $('<li>',{
                html:    '<img src="'+option.data('icon')+'" /><span>'+
                        option.data('html-text')+'</span>'
            });
                    
            li.click(function(){
                
                selectBox.html(option.text());
                dropDown.trigger('hide');
                
                // Когда происходит событие click, мы также отражаем
                // изменения в оригинальном элементе select:
                select.val(option.val());
                
                return false;
            });
            
            dropDown.append(li);
        });
        
        selectBoxContainer.append(dropDown.hide());
        select.hide().after(selectBoxContainer);
        
        // Привязываем пользовательские события show и hide к элементу dropDown:
        
        dropDown.bind('show',function(){
            
            if(dropDown.is(':animated')){
                return false;
            }
            
            selectBox.addClass('expanded');
            dropDown.slideDown();
            
        }).bind('hide',function(){
            
            if(dropDown.is(':animated')){
                return false;
            }
            
            selectBox.removeClass('expanded');
            dropDown.slideUp();
            
        }).bind('toggle',function(){
            if(selectBox.hasClass('expanded')){
                dropDown.trigger('hide');
            }
            else dropDown.trigger('show');
        });
        
        selectBox.click(function(){
            dropDown.trigger('toggle');
            return false;
        });
    
        // Если нажать кнопку мыши где-нибудь на странице при открытом элементе dropDown,
        // он будет спрятан:
        
        $(document).click(function(){
            dropDown.trigger('hide');
        });
    });


    Подключим библиотеку jquery, наш js и наши css стили между тегами head:
    <link rel="stylesheet" type="text/css" href="css/styles.css" />
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"
    ></script>
    <script src="js/script.js"></script>

    Вот и всё! Готова ;)


    -------------
    Подарки: (Всего подарков: 0 )
    У пользователя нет подарков
    0

    Поделиться темой:


    Страница 1 из 1
    • Вы не можете создать новую тему
    • Вы не можете ответить в тему

    1 человек читают эту тему
    0 пользователей, 1 гостей, 0 скрытых пользователей


    Оплата:

    Скриншоты выплат | Оплата за сообщения и темы | Получение выплаты | Штрафы | Где снять деньги? | Как заказывается выплата? | Как сделать скриншот выплаты |
    О форуме:

    1$ За Пользователя! | Ротаторы | Рассылка пользователям форума | Реклама на форуме | Новости | Конкурсы
    Важное:

    Живое общение | Финансовый раздел | Все для Веб-Мастера. | Программирование | Объявления | Завалинка | Администрация | Активные темы |