Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Вёрстка веб-сайтов > <select>


Автор: Гость_Сергей 27.4.2005, 10:25
Вот есть такая запись

CSS
input {border: 1 solid}
select {border: 1 solid}

HTML
<input type=text name=qq>
<select name=ww size=1>
<option value=a1>value 1</option>
<option value=a2>value 2</option>
</select>

Почему строка с текстом получается с границей в 1 пиксель, а у поля выбора граница остаётся прежней с тенями и некрасивой.

Как тогда сделать, чтобы у поля выбора тоже можно было сделать границу в 1 пиксель?

Автор: Irokez 27.4.2005, 10:33
просто стилями не получится, выход есть такой:
надо селектбокс засунуть в <div>, у которого с помощью clip - отрезать границы селектбокса, а затем поставить границу для дива

Автор: PARROT 27.4.2005, 10:33
Код

<input type=text style="border: 1 solid;">


Для селекта незнаю как.
Добавлено @ 10:37
А как отрезать clip -ом??? smile

Автор: dm9 27.4.2005, 10:44
Хороший вопрос smile

Я найти решения не смог. Могу порекомендовать найти хороший скрипт выпадающего меню (или спросить народ в http://forum.vingrad.ru/index.php?showforum=10) и использовать его smile

Если найдёте решение, напишите сюда, пожалуйста.

PS Для более строгих, чем Internet Explorer, браузеров, стоит прописывать единицы измерения: не "1 solid", а "1px solid".

PPS Вариант с дивом интересен, сейчас попробую smile

Автор: dm9 27.4.2005, 11:02
Irokez, у меня что-то не хочет clip работать. Покажи, как это сделать можно smile

Автор: PARROT 27.4.2005, 11:06
Ну вот у меня так получается, но это не совсем верно:

Код

<input type=text name=qq style="border: 1px solid;">
<div style="border: 1px solid;width:60;"><select name=ww clip>
<option value=a1>value 1</option>
<option value=a2>value 2</option>
</select></div>

Автор: Гость_Сергей 27.4.2005, 12:06
не получается.
clip не убирает рамку у селекта.

Автор: Irokez 27.4.2005, 12:18
Цитата(dm9 @ 27.4.2005, 11:02)
Irokez, у меня что-то не хочет clip работать. Покажи, как это сделать можно smile

да вот пожалуста:
Код

<html>
<head>
<title>
</title>
<style>
.input-select
{
    width:150px;
    margin:0px;
    padding:0px;
    position:absolute;
    clip:rect(2px 500px 19px 2px);
    background-color:#ffffff;
}
.input-select-div
{
    padding:0px;
    width:152px;
    height:22px;
    border:solid 1px #000000;
}
</style>
</head>
<body>
<div class="input-select-div">
<select class="input-select">
<option value=1>one 
<option value=2>two 
<option value=3>three 
</select>
</div>
</body>
</hmtl>

Автор: dm9 27.4.2005, 20:51
Irokez, классно smile

Только не очень красиво выглядит. Пробовал подобрать числа, чтоб было красиво (там ещё надо добавить overflow: hidden для дива). К сожалению, для каждого браузера свои плюс-минус один-два пикселя, это всё портит. Если только на JavaScript стили под каждый браузер переписывать.

PS С меня плюс за то, что научил использовать position:absolute; smile
Я его только в связке с left: xxx; top: yyy; использовал до этого.

Автор: Irokez 27.4.2005, 20:56
Цитата(dm9 @ 27.4.2005, 20:51)
К сожалению, для каждого браузера свои плюс-минус один-два пикселя, это всё портит. Если только на JavaScript стили под каждый браузер переписывать.

ява скрипт тут не нужен, покажу одну хитрость (на вебмасконе перенял)
Код

margin: 5px; /*работает в ИЕ, ФФ, Опере*/
margin: "10px"; /*работает только в ИЕ*/

в итоге, в ФФ и Опере отступ будет равен 5, а в ИЕ - 10 пикселям

Автор: dm9 27.4.2005, 21:02
Приколист smile)))

Но тут ещё такая фишка. Под Оперу и Firefox тоже нужны разные маржины и границы дива и клипа...

Автор: Irokez 27.4.2005, 21:07
Цитата(dm9 @ 27.4.2005, 21:02)
Но тут ещё такая фишка. Под Оперу и Firefox тоже нужны разные маржины и границы дива и клипа...

тогда облом .. только яваскриптом smile

Автор: Гость_Сергей 29.4.2005, 09:35
действительно получается. но не совсем.
вот у меня идут подряд 3 списка <select>, но после clip и position:absolute и вставки <div>, они располагаются каждый на новой строке.
если же все три списка загоняю в один <div>, то абсолютное позиционирование держит их на одном месте друг под другом.
отсюда вопрос.
как между </div> и <div> убрать перенос строки?
если нельзя, то как отпозиционировать все три списка, чтобы они отображались на одной строке поочереди, а не друг под другом?

Автор: dm9 29.4.2005, 10:12
Цитата
как между </div> и <div> убрать перенос строки?


Попробуй стиль display: inline;

Добавлено @ 10:12
В смысле, это стиль для этих дивов...

Автор: Гость_Сергей 4.5.2005, 16:19
А как тогда ещё кнопки выбора поменять?
хочу, чтоб она была белая, стрелочка чёрная, рамка в 1 пиксель чёрная.

Автор: dm9 4.5.2005, 23:05
Думаю, никак smile Смотри мой первый вариант.

Цитата(dm9 @ 27.4.2005, 11:44)
Могу порекомендовать найти хороший скрипт выпадающего меню (или спросить народ в форуме JavaScript) и использовать его


Автор: Aliance 22.5.2005, 23:00
Вот нашел оригинальный способ группировки для select`а:
Код

<form>
<p>Справочники:</p>
 <select name="ask">
 <optgroup label="HTML">
  <option label="3.2">HTML 3.2
  <option label="4.0">HTML 4.0
 </optgroup>
 <optgroup label="CSS">
  <option label="1">CSS-1
  <option label="1">CSS-2
  <option label="3">CSS-3
 </optgroup>
  <option value="js">JavaScript
  <option value="dhtml">DHTML
 </select></p>
</form>

Автор: Irokez 23.5.2005, 11:38
Цитата(Aliance @ 22.5.2005, 23:00)
Вот нашел оригинальный способ группировки для select`а:

а что оригинального smile

Автор: liliana2 31.3.2009, 09:44
Цитата(dm9 @ 4.5.2005,  23:05)
Думаю, никак smile Смотри мой первый вариант.

Цитата(dm9 @  27.4.2005,  11:44)
Могу порекомендовать найти хороший скрипт выпадающего меню (или спросить народ в форуме JavaScript) и использовать его

А непосредетсвенно сам скрипт ен порекомендуете? Буду премного благодарна

Автор: Violator 31.3.2009, 12:02
liliana2
скачайте библиотеку jquery
http://docs.jquery.com/Downloading_jQuery

Код

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
  <title></title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <script language="javascript" type="text/javascript" src="jquery.js"></script>
  <script language="javascript" type="text/javascript">
    $(document).ready(function() {
      $("#dd_currency").mouseover(function () {
          $("#curr_list").removeClass("hidden");
      });
      $("#dd_currency").mouseout(function () {
          $("#curr_list").addClass("hidden");
      });
      $("#curr_list a").bind("click", function() {
        $("#curr_list").addClass("hidden");
        $("#currency").attr("value", $(this).attr("id"));
        $("#curr_selected").text($(this).text());
        return false;
      });
    });
  </script>
  <style>
    body {
      margin: 0;
      padding: 0;
    }
    .hidden {
      display: none;
    }
    .dropdown {
      font: 11px arial;
      border: 1px solid #08488d;
      background-color: #d4e2f7;
      background-image: url(arrow.gif);
      background-repeat: no-repeat;
    }
    .dropdown a {
      display: block;
      color: #262626;
      background-color: #d4e2f7;
      padding: 3px 10px;
      text-decoration: none;
    }
    .dropdown a:hover {
      background-color: #e5ecf5;
    }
    #curr_selected {
      color: #262626;
      padding: 3px 10px;
      cursor: pointer;
    }
    #dd_currency {
      width: 155px;
      background-position: 138px 8px;
    }
    * html .dropdown a {
      height: 1%;
    }
  </style>
</head>

<body>
  <form method="post" action="/">
    <input id="currency" type="hidden" name="currency" value="aud" />
    <div id="dd_currency" class="dropdown">
      <div id="curr_selected">Australian dollar (AUD)</div>
      <div id="curr_list" class="hidden">
        <a id="aud" href="#">Australian dollar (AUD)</a>
        <a id="cad" href="#">Canadian dollar (CAD)</a>
        <a id="czk" href="#">Czech coruna (CZK)</a>
        <a id="huf" href="#">Hungarian forint (HUF)</a>
      </div>
    </div>
  </form>
</body>
</html>

Автор: liliana2 31.3.2009, 14:38
простите,за возможно глупый вопрос, а чтос этой библиотекой делать?
Как то можно по русски тоже самое почитать? а то совсем непонятно, или если не сложно сами поясните пожалуйста

Автор: liliana2 1.4.2009, 06:58
ага, разобралась, что бибилиотеку нужно подключать, вставила ваш код, все отлично смотрится, и теперь даже работает, а можно ли как то сделать чтобы он раскрывался не пр наведении а при клике? пробовала заменить mouseover на onclick - не помогает

Автор: Violator 1.4.2009, 12:06
Код

    $(document).ready(function() {
      $("#curr_selected").bind("click", function() {
        $("#curr_list").toggleClass("hidden");
      });
      $("#curr_list a").bind("click", function() {
        $("#curr_list").addClass("hidden");
        $("#currency").attr("value", $(this).attr("id"));
        $("#curr_selected").text($(this).text());
        return false;
      });
    });

Автор: liliana2 1.4.2009, 12:27
спасибо огромное, где тут кнопка "сказать спасибо", только еще один вопрос, этот самодельный селект будет работат как элемент формы, то есть там данные в форму посылать и так далее?

Автор: Violator 1.4.2009, 12:34
liliana2
да, будут отсылатся

Автор: liliana2 6.4.2009, 06:09
еще такой вопрос, у меня на странице не один селект, ну и соотвественно чтобы все работало правильно каждому задается свои id, а как сделать это в одном скрипте?

Автор: liliana2 7.4.2009, 06:16
И еще хотелось бы чтобы этот селеккт схлопывался когда убираешь мышь или щелкаешь мимо, а не как простое  выпадающее меню, то есть по поведению юлиже к селекту

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)