【问题标题】:SelectBoxIt clashes with CSS fileSelectBoxIt 与 CSS 文件冲突
【发布时间】:2019-12-24 20:13:08
【问题描述】:

我目前正在开发货币转换器应用程序并尝试将标志图标添加到货币中。我正在使用SelectBoxIt jQuery 插件来完成它。

问题是每当我使用 SelectBoxIt 插件时,选择选项下拉样式会发生冲突,请参见下文。

查看选项如何水平折叠

令人惊讶的是,如果我删除指向我的 CSS 文件的链接,插件就会神奇地工作。

知道如何解决这个问题吗?

查看下面的完整代码

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery.selectboxit/3.8.0/jquery.selectBoxIt.css" />
</head>
<body onload="convertDineroBottom()">

    <div id="containerSelect"> 
      <select id="from" onchange="convertDineroBottom()" >
        <option value="EUR" data-iconurl="https://upload.wikimedia.org/wikipedia/commons/b/b7/Flag_of_Europe.svg">EUR</option>
        <option value="USD" data-iconurl="https://cdn.countryflags.com/thumbs/united-states-of-america/flag-400.png">USD</option>
        <option value="GBP" data-iconurl="https://cmkt-image-prd.global.ssl.fastly.net/0.1.0/ps/221487/910/607/m1/fpnw/wm0/united-kingdom-flag-1-.jpg?1414512427&s=f16b2cb24fd704ffcf14b18ee18b5f4e">GBP</option>
        <option value="JPY">JPY</option>
        <option value="HKD">HKD</option>
      </select>

      <select id="to"  onchange="convertDineroTop()">
        <option value="GBP">GBP</option>
        <option value="EUR">EUR</option>
        <option value="USD">USD</option>
        <option value="JPY" selected>JPY</option>
        <option value="HKD">HKD</option>
      </select>
    </div>  

          <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
          <script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.0/jquery-ui.min.js"></script>
          <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.selectboxit/3.8.0/jquery.selectBoxIt.min.js"></script>
</body>
</html>
body{
   background: linear-gradient(0deg, rgba(100,100,100,1) 0%, rgba(165,165,165,1) 46%, rgba(186,186,190,1) 49%, rgba(205,205,208,1) 50%, rgba(222,218,218,1) 58%, rgba(221,221,221,1) 91%, rgba(181,182,182,1) 100%);
   height: 1080px;
}

nav{
    background-color: turquoise;
}

ul{
    list-style-type: none;
    display: flex;
    justify-content: space-between;
    align-items: center;
    width: 70%;
    margin: auto;
    padding-top:5%;
}

li{
}

#logo{
}

#date{

}

#containerInput{
  display: flex;
  flex-flow: row wrap;
  justify-content: space-between;
  width: 40%;
  margin: auto;
  margin-top:10%;
}

input{
  border: none;
  height: 160px;
  width: 220px;
  background-color: #0e3d73;
  color: white;
  font-size:2em;
  text-align: center;
}

#arrow{
  margin-top:9%;
}

#arrow img{
  height:50px;
  width:50px;
}

#containerSelect{
  display: flex;
  justify-content: space-between;
  flex-flow: row wrap;
  width: 40%;
  margin: auto;
  margin-top:2%;
}

select{
  width: 220px;
  height: 40px;
}
function convertDineroBottom() {
  var fromCurrency = document.getElementById("from").value;
  var toCurrency = document.getElementById("to").value;


fetch("https://api.exchangeratesapi.io/latest?base=" + fromCurrency)
  .then((resp) => resp.json())
  .then(function(data){
    (fromCurrency===toCurrency) ? 
    document.getElementById("toQuantity").value = document.getElementById("fromQuantity").value :
    document.getElementById("toQuantity").value = data.rates[toCurrency]*document.getElementById("fromQuantity").value;

  })
    .catch(function(error) {
    console.log(error);
    });
}



function convertDineroTop() {
    var fromCurrency = document.getElementById("from").value;
  var toCurrency = document.getElementById("to").value;


        fetch("https://api.exchangeratesapi.io/latest?base=" + toCurrency)
    .then((resp) => resp.json())
  .then(function(data){
  //if both currencies are the same return identical values
        (toCurrency===fromCurrency) ?
         document.getElementById("fromQuantity").value = document.getElementById("toQuantity").value :
        //otherwise return the top value as the multiplication of top currency rate by the amount specied below
            document.getElementById("fromQuantity").value = data.rates[fromCurrency]*document.getElementById("toQuantity").value;

  })
    .catch(function(error) {
    console.log(error);
    });
}

$(function() {

              var selectBox = $("select").selectBoxIt();

            });

【问题讨论】:

  • 您好,请在问题中添加minimal reproducible example,否则将很难提供任何帮助。
  • 使用您的浏览器开发工具对其进行调试,您可以准确地看到样式的来源。没有看到你的代码,任何人都不可能帮助你
  • 添加了代码人

标签: jquery html css selectboxit


【解决方案1】:

css 经常会发生冲突。每当发生这种情况时,您都有几个选择,尽管它们都等同于同一件事:比糟糕的 css 更有力。

做到这一点的最好方法是更具体:

span {
  display: inline-block;
  background: red;
  height: 30px;
  width: 30px;
}

div span {
  background: blue;
}

div > span {
  background: green;
}
<span></span>

<div>
  <h1><span></span></h1>
  <span></span>
</div>

在上面的示例中,span 最不具体,div span 更具体,div &gt; span 最具体。弄清楚有问题的 CSS 有多具体,并且比它更具体。

或者,使用!important,但确实不建议这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-02
    • 1970-01-01
    • 2017-04-19
    • 1970-01-01
    • 2011-10-24
    • 2012-02-11
    • 2014-03-10
    • 1970-01-01
    相关资源
    最近更新 更多