ट्विटर के typeahead.js सुझावों को स्टाइल नहीं किया गया है (कोई सीमा नहीं है, पारदर्शी पृष्ठभूमि, आदि)


182

मैं ट्विटर के typeahead.js 0.9.3 का उपयोग कर रहा हूं और ऐसा लगता है कि मेरे सुझाव बिल्कुल भी स्टाइल नहीं हैं।

मुझे यह मिल रहा है:

टंकियों का बग

कुछ इस तरह के बजाय: ( उदाहरण पृष्ठ से लिया गया )

टाइपहेड आदर्श

जावास्क्रिप्ट टाइपिंगहेड को सक्षम करना:

$('.search-typeahead').typeahead({
    name: 'videos',
    remote: {
        url: '/api/v1/internal/videos/typeahead?text=%QUERY'
    }
});

HTML इनपुट तत्व:

<input type="text" value="" id="search_keywords" class="no-clear search-typeahead"/>

अतिरिक्त नोट्स:

मैं जिस साइट पर काम कर रहा हूं उसमें jQuery 1.10.1 है और ट्विटर बूटस्ट्रैप का उपयोग नहीं करता है। सीएसएस का एक गुच्छा है जो मैंने नहीं लिखा था और इस तरह से परिचित नहीं हूं जिससे मुझे डर है कि वह हस्तक्षेप कर रहा है, हालांकि ऐसा लगता है कि प्लगइन अपनी खुद की शैलियों को जोड़ता है (कोई साथ नहीं है। एससीएस फ़ाइल) तो यह सैद्धांतिक रूप से चीजों को ओवरराइड नहीं करना चाहिए। ? मैं उलझन में हूं कि मेरी शैलियाँ क्यों काम करती हैं, लेकिन प्लगइन द्वारा जोड़े गए, जिसके परिणामस्वरूप पारदर्शी पृष्ठभूमि, कोई सीमाएं आदि के साथ कोई सुझाव नहीं है।

जवाबों:


212

इसलिए अब मैं देख रहे डॉक्स में देख रहा हूं:

डिफ़ॉल्ट रूप से, typeeahead.js द्वारा बनाया गया ड्रॉपडाउन मेनू बदसूरत दिखने वाला है और आप इसे अपने वेब पेज की थीम में फिट करने के लिए इसे स्टाइल करना चाहेंगे।

मेरा समाधान इस प्रकार स्टाइल को कॉपी करने के उदाहरण से था जिसे मैं दोहराना चाहता था:

.tt-query, /* UPDATE: newer versions use tt-input instead of tt-query */
.tt-hint {
    width: 396px;
    height: 30px;
    padding: 8px 12px;
    font-size: 24px;
    line-height: 30px;
    border: 2px solid #ccc;
    border-radius: 8px;
    outline: none;
}

.tt-query { /* UPDATE: newer versions use tt-input instead of tt-query */
    box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}

.tt-hint {
    color: #999;
}

.tt-menu { /* UPDATE: newer versions use tt-menu instead of tt-dropdown-menu */
    width: 422px;
    margin-top: 12px;
    padding: 8px 0;
    background-color: #fff;
    border: 1px solid #ccc;
    border: 1px solid rgba(0, 0, 0, 0.2);
    border-radius: 8px;
    box-shadow: 0 5px 10px rgba(0,0,0,.2);
}

.tt-suggestion {
    padding: 3px 20px;
    font-size: 18px;
    line-height: 24px;
}

.tt-suggestion.tt-is-under-cursor { /* UPDATE: newer versions use .tt-suggestion.tt-cursor */
    color: #fff;
    background-color: #0097cf;

}

.tt-suggestion p {
    margin: 0;
}

19
किसी कारण से मेरे सुझाए गए संपादन अस्वीकृत हो गए, लेकिन ध्यान दें कि tt-is-under-cursorलगता है कि कक्षा का नाम बदल दिया गया है tt-cursorयहाँ प्रलेखन ।
जो फ्रीमैन

6
tt-inputइसके बजाय tt-query(0.10.5 के लिए) के रूप में भी है
फिलिप

7
क्या टिप्पणियों में पुराने संस्करणों को रखना बेहतर नहीं होगा?
दुनियाशी

3
.tt-लटकती-मेनू अब .tt-मेनू है
bkwdesign

1
एक उचित कर्सर cursor: pointer;रखने के .tt-is-under-cursorलिए जोड़ें जो उपयोगकर्ता को बताता है कि उसे क्लिक करने की आवश्यकता है।
लॉरेंट डब्ल्यू।

124

तो, निम्नलिखित शैलियाँ आपको यह लुक और एहसास देंगी। यह सीएसएस पर आधारित है जिसे मैंने आधिकारिक टाइपहेड उदाहरण वेबसाइट से निकाला है।

यहां छवि विवरण दर्ज करें

सीएसएस:

.tt-query {
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}

.tt-hint {
  color: #999
}

.tt-menu {    /* used to be tt-dropdown-menu in older versions */
  width: 422px;
  margin-top: 4px;
  padding: 4px 0;
  background-color: #fff;
  border: 1px solid #ccc;
  border: 1px solid rgba(0, 0, 0, 0.2);
  -webkit-border-radius: 4px;
     -moz-border-radius: 4px;
          border-radius: 4px;
  -webkit-box-shadow: 0 5px 10px rgba(0,0,0,.2);
     -moz-box-shadow: 0 5px 10px rgba(0,0,0,.2);
          box-shadow: 0 5px 10px rgba(0,0,0,.2);
}

.tt-suggestion {
  padding: 3px 20px;
  line-height: 24px;
}

.tt-suggestion.tt-cursor,.tt-suggestion:hover {
  color: #fff;
  background-color: #0097cf;

}

.tt-suggestion p {
  margin: 0;
}

यह मानता है कि आपके इनपुट में form-controlकक्षा होगी । मेरे उदाहरण के लिए, यह इस तरह है:

<input class="typeahead form-control" type="text" placeholder="States of USA">

4
एक ट्वीक के साथ मेरे लिए काम किया। .tt-dropdown-menuअब प्रकट होता है .tt-menu। उत्तर के लिए धन्यवाद।
ग्राउंड -0 डिग्री

33

https://github.com/bassjobsen/typeahead.js-bootstrap-css/blob/master/typeaheadjs.css

दूसरे लोग बहुत अच्छे नहीं लग रहे थे, यह सबसे बूटस्ट्रैप जैसा दिखता है।


1
बूटस्ट्रैप के साथ महान काम करता है
जोस चेरियन

यह पूरी तरह से रेल 4.2 और बूटस्ट्रैप-एसएएस (3.3.7) ऑटोपरिफ़िशर-रेल्स (> = 5.2.1) एसएएस (> = 3.3.4) में कोई बदलाव नहीं किया गया है, यह थोड़ा और अधिक उत्तरदायी अनुकूल है जो अन्य समाधानों में से कुछ है। इसके अलावा इसका मतलब है कि आपके इनपुट बॉक्स की चौड़ाई 100% हो सकती है इसलिए अधिकांश लेआउट के साथ काम करना चाहिए।
22

यद्यपि यदि आप इनपुट 162 (यहाँ उपयोग की गई न्यूनतम चौड़ाई) से अधिक व्यापक हैं, तो आप चौड़ाई भी जोड़ना चाह सकते हैं: 100%; tt-menu / tt-dropdown
rmcsharry

19

टाइपरहेड ने अपने वर्ग के कुछ नामों को बदल दिया है और उपरोक्त उदाहरण अब गलत हैं।

उदाहरण के लिए:

  • उपयोग के बजाय.tt-suggestion.tt-is-under-cursor .tt-suggestion:hover
  • इसके बजाय .tt-dropdown-menu, उपयोग करें.tt-menu

यदि आप उदाहरण पृष्ठ से शैली उधार लेना चाहते हैं , तो आप उनकी स्टाइलशीट यहाँ देख सकते हैं :

.typeahead,
.tt-query,
.tt-hint {
  width: 396px;
  height: 30px;
  padding: 8px 12px;
  font-size: 24px;
  line-height: 30px;
  border: 2px solid #ccc;
  -webkit-border-radius: 8px;
     -moz-border-radius: 8px;
          border-radius: 8px;
  outline: none;
}

.typeahead {
  background-color: #fff;
}

.typeahead:focus {
  border: 2px solid #0097cf;
}

.tt-query {
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}

.tt-hint {
  color: #999
}

.tt-menu {
  width: 422px;
  margin: 12px 0;
  padding: 8px 0;
  background-color: #fff;
  border: 1px solid #ccc;
  border: 1px solid rgba(0, 0, 0, 0.2);
  -webkit-border-radius: 8px;
     -moz-border-radius: 8px;
          border-radius: 8px;
  -webkit-box-shadow: 0 5px 10px rgba(0,0,0,.2);
     -moz-box-shadow: 0 5px 10px rgba(0,0,0,.2);
          box-shadow: 0 5px 10px rgba(0,0,0,.2);
}

.tt-suggestion {
  padding: 3px 20px;
  font-size: 18px;
  line-height: 24px;
}

.tt-suggestion:hover {
  cursor: pointer;
  color: #fff;
  background-color: #0097cf;
}

.tt-suggestion.tt-cursor {
  color: #fff;
  background-color: #0097cf;

}

.tt-suggestion p {
  margin: 0;
}

यहां स्टैक स्निपेट्स में एक डेमो दिया गया है


2
क्या यह संभव है कि टाइपिंगहेड को चौड़ाई इतनी कम होने से रोका जा सके?
रूनी जेपसेन

13

यह वह कोड है जो मेरे लिए काम करता है:

.twitter-typeahead .tt-query,
.twitter-typeahead .tt-hint {
    margin-bottom: 0;
}
.tt-hint {
    display: block;
    width: 100%;
    padding: 8px 12px;
    font-size: 14px;
    line-height: 1.428571429;
    color: #999;
    vertical-align: middle;
    background-color: #ffffff;
    border: 1px solid #cccccc;
    border-radius: 4px;
    -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
    -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
          transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
}
.tt-dropdown-menu {
    min-width: 160px;
    margin-top: 2px;
    padding: 5px 0;
    background-color: #ffffff;
    border: 1px solid #cccccc;
    border: 1px solid rgba(0, 0, 0, 0.15);
    border-radius: 4px;
    -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
          box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
    background-clip: padding-box;

}
.tt-suggestion {
    display: block;
    padding: 3px 20px;
}
.tt-suggestion.tt-is-under-cursor {
    color: #fff;
    background-color: #dfdfdf;
}
.tt-suggestion.tt-is-under-cursor a {
    color: #fff;
}
.tt-suggestion p {
    margin: 0;
}

1
यह समाधान इनपुट की चौड़ाई से कोई फर्क नहीं पड़ता। धन्यवाद!
स्पेससूटिवर

एक ही स्क्रीन पर मेरे लिए typeeahead.js + BS3 + डेटेबल के साथ परफेक्ट काम करें। धन्यवाद
माइक कास्त्रो DeMaria

3

चूंकि मेरे पास BS3 के साथ कम वातावरण है, इसलिए मैंने Zugwalt css कोड लिया (इसे अधिक पठनीय पदानुक्रम में रखा गया) और इसे bs3 के ड्रॉपडाउन-मेनू से स्टाइल से भर दिया। यह आपके (अनुकूलित) चर का अनुसरण कर रहा है।

    .twitter-typeahead {
      display: block;
      width: 100%; //BS 3 needs this to inherit this for children

      .tt-query,
      .tt-hint {
        margin-bottom: 0;
      }

      .tt-dropdown-menu {
        z-index: @zindex-dropdown;
        min-width: 326px;
        padding: 5px 0;
        margin: 2px 0 0; // override default ul
        font-size: @font-size-base;
        text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)
        background-color: @dropdown-bg;
        border: 1px solid @dropdown-fallback-border; // IE8 fallback
        border: 1px solid @dropdown-border;
        border-radius: @border-radius-base;
        .box-shadow(0 6px 12px rgba(0, 0, 0, .175));
        background-clip: padding-box;

        .tt-suggestions {

          .tt-suggestion {
            padding: 3px 12px;
            font-weight: normal;
            line-height: @line-height-base;
            color: @dropdown-link-color;
            white-space: nowrap; // prevent links from randomly breaking onto new lines
          }

          .tt-suggestion.tt-cursor {
            color: @dropdown-link-hover-color;
            background-color: @dropdown-link-hover-bg;
          }

          .tt-suggestion p {
            margin: 0;
          }
        }
      }
    }

1

यहाँ एक scssसंस्करण है जो बूटस्ट्रैप चर / घोषणाओं पर अधिक से अधिक निर्भर करता है। दुर्भाग्य से आप सैस में नेस्टेड चयनकर्ताओं का विस्तार नहीं कर सकते, अन्यथा यह छोटा होगा:

@mixin typeahead-active() {
  // mimics  @extend .dropdown-menu > .active > a;
  color: $dropdown-link-active-color;
  text-decoration: none;
  outline: 0;
  background-color: $dropdown-link-active-bg;
}

//https://github.com/corejavascript/typeahead.js/blob/master/doc/jquery_typeahead.md#class-names
span.twitter-typeahead {

  // this is the suggested matches dropdown
  .tt-menu {
    @extend .dropdown-menu;
  }

  .tt-hint {
    color: #999
  }

  // Added to suggestion elements.
  .tt-suggestion {

    // mimic .dropdown-menu > li > a
    padding: 3px 20px;
    line-height: $line-height-base;

    // Added to suggestion element when menu cursor moves to said suggestion.
    &.tt-cursor {
      @include typeahead-active;
    }

    // Hover/focus on suggestion
    &:hover,
    &:focus {
      @include typeahead-active;
    }

    p {
      margin: 0;
    }
  }

  .input-group & {
    display: block !important;
    .tt-dropdown-menu {
      top: 32px !important;
    }
  }
  .input-group.input-group-lg & {
    .tt-dropdown-menu {
      top: 44px !important;
    }
  }
  .input-group.input-group-sm & {
    .tt-dropdown-menu {
      top: 28px !important;
    }
  }
}

1

यदि आप बूटस्ट्रैप 4 का उपयोग कर रहे हैं, तो यह करने के लिए पर्याप्त है:

span.twitter-typeahead
  width: 100%

.tt-input
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075)

.tt-menu
  @extend .list-group
  box-shadow: 0 5px 10px rgba(0,0,0,.2)
  width: 100%

.tt-suggestion
  @extend .list-group-item

.tt-selectable
  @extend .list-group-item-action

0

मेरे विशेष मामले में पूर्ण स्थिति ने इसे हल किया। जब सुझाव सूची (tt-menu) खुली थी, तो सापेक्ष स्थिति अन्य बूटस्ट्रैप तत्वों को नीचे धकेल रही थी।

.tt-menu { 
    z-index: 2147483647;
    position: absolute;    
}

आप इसे उपरोक्त उत्तर https://stackoverflow.com/a/26934329/1225421 पर जोड़ सकते हैं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.