在选项中添加图像 [英] Adding image in option

查看:43
本文介绍了在选项中添加图像的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我打开列表并使用 awesomplete自动完成插件时,我想在选项左侧添加图片,我想添加一张图片,向您展示我想做的事情.

I want to add a image left of my option when my list opened and I'm using awesomplete autocomplete plugin and I'd like to add a picture to show you what I want to do.

我尝试添加内联CSS,但没有任何变化

I try to add inline css but nothing change

$(document).ready(function() {
  $('.awesomplete').on('awesomplete-select', function() {
    var $this = $(this),
      $sibling = $this.next();
    if ($sibling.attr('id') == 'mylist') {
      setTimeout(function() {
        var val = $this.find('input').val();
        var dataLink = $sibling.find('option:contains("' + val + '")').data('link');
        //console.log(dataLink);
        location.href = dataLink;
      }, 500);
    }
  });
});

.awesomplete>ul {
  border-radius: .3em;
  margin: .2em 0 0;
  background: hsla(0, 0%, 100%, .9);
  background: linear-gradient(to bottom right, white, hsla(0, 0%, 100%, .8));
  border: 1px solid rgba(0, 0, 0, .3);
  box-shadow: .05em .2em .6em rgba(0, 0, 0, .2);
  text-shadow: none;
}

@supports (transform: scale(0)) {
  .awesomplete>ul {
    transition: .3s cubic-bezier(.4, .2, .5, 1.4);
    transform-origin: 1.43em -.43em;
  }
  .awesomplete>ul[hidden],
  .awesomplete>ul:empty {
    opacity: 0;
    transform: scale(0);
    display: block;
    transition-timing-function: ease;
  }
}


/* Pointer */

.awesomplete>ul:before {
  content: "";
  position: absolute;
  top: -.43em;
  left: 1em;
  width: 0;
  height: 0;
  padding: .4em;
  background: white;
  border: inherit;
  border-right: 0;
  border-bottom: 0;
  -webkit-transform: rotate(45deg);
  transform: rotate(45deg);
}

.awesomplete>ul>li {
  position: relative;
  padding: .2em .5em;
  cursor: pointer;
}

.awesomplete>ul>li:hover {
  background: hsl(200, 40%, 80%);
  color: black;
}

.awesomplete>ul>li[aria-selected="true"] {
  background: hsl(205, 40%, 40%);
  color: white;
}

.awesomplete mark {
  background: hsl(65, 100%, 50%);
}

.awesomplete li:hover mark {
  background: hsl(68, 100%, 41%);
}

.awesomplete li[aria-selected="true"] mark {
  background: hsl(86, 100%, 21%);
  color: inherit;
}

<input class="awesomplete dropdown-input" list="mylist" id="my-input" />
<datalist id="mylist">
	<option data-link="http://www.google.com">Ada</option>
	<option data-link="http://www.yahoo.com">Java</option>
	<option data-link="http://www.bing.com">JavaScript</option>
	<option data-link="http://www.yandex.com">Brainfuck</option>
	<option data-link="http://www.php.net">LOLCODE</option>
	<option data-link="http://www.asp.net">Node.js</option>
	<option data-link="http://www.microsoft.net">Ruby on Rails</option>
</datalist>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/awesomplete/1.1.1/awesomplete.min.js"></script>

推荐答案

您可以覆盖将图片放在标签前的单个项目的创建,例如:

You could override the creation of single item putting an image before the label, like:

var awesomplete = new Awesomplete(input, {
   item: myItemFunc
});;

function myItemFunc(text, input){
    //return the html to render an item
}

有关完整示例,请参见以下内容:

See following for a complete example:

var imgList = new Object();
imgList["Ada"] = "http://www.maglioccola.com/images/add-1.png";
imgList["Java"] = "http://www.maglioccola.com/images/add-2.png";
imgList["JavaScript"] = "http://www.maglioccola.com/images/add-3.png";
imgList["Brainfuck"] = "http://www.maglioccola.com/images/add-4.png";
imgList["LOLCODE"] = "http://www.maglioccola.com/images/add-4.png";
imgList["Node.js"] = "http://www.maglioccola.com/images/add-4.png";
imgList["Ruby on Rails"] = "http://www.maglioccola.com/images/add-4.png";

$(document).ready(function() {
  var input = document.getElementById("my-input");
  var awesomplete = new Awesomplete(input, {
    item: myItemFunc
  });;
});

function myItemFunc(text, input){
  return Awesomplete.$.create("li", {
    innerHTML: createItem(text,input),
    "aria-selected": "false"
  });
}

function createItem(text, input){
  var img = document.createElement("img");
  img.style.height = '16px';
  img.src = imgList[text.label];
  var html = img.outerHTML + " " + text.label;
  return html;
}

.awesomplete>ul {
  border-radius: .3em;
  margin: .2em 0 0;
  background: hsla(0, 0%, 100%, .9);
  background: linear-gradient(to bottom right, white, hsla(0, 0%, 100%, .8));
  border: 1px solid rgba(0, 0, 0, .3);
  box-shadow: .05em .2em .6em rgba(0, 0, 0, .2);
  text-shadow: none;
  list-style: none;
}

@supports (transform: scale(0)) {
  .awesomplete>ul {
    transition: .3s cubic-bezier(.4, .2, .5, 1.4);
    transform-origin: 1.43em -.43em;
  }
  .awesomplete>ul[hidden],
  .awesomplete>ul:empty {
    opacity: 0;
    transform: scale(0);
    display: block;
    transition-timing-function: ease;
  }
}


/* Pointer */

.awesomplete>ul:before {
  content: "";
  position: absolute;
  top: -.43em;
  left: 1em;
  width: 0;
  height: 0;
  padding: .4em;
  background: white;
  border: inherit;
  border-right: 0;
  border-bottom: 0;
  -webkit-transform: rotate(45deg);
  transform: rotate(45deg);
}

.awesomplete>ul>li {
  position: relative;
  padding: .2em .5em;
  cursor: pointer;
}

.awesomplete>ul>li:hover {
  background: hsl(200, 40%, 80%);
  color: black;
}

.awesomplete>ul>li[aria-selected="true"] {
  background: hsl(205, 40%, 40%);
  color: white;
}

.awesomplete mark {
  background: hsl(65, 100%, 50%);
}

.awesomplete li:hover mark {
  background: hsl(68, 100%, 41%);
}

.awesomplete li[aria-selected="true"] mark {
  background: hsl(86, 100%, 21%);
  color: inherit;
}

<input list="mylist" id="my-input" />
<datalist id="mylist">
	<option data-link="http://www.google.com">Ada</option>
	<option data-link="http://www.yahoo.com">Java</option>
	<option data-link="http://www.bing.com">JavaScript</option>
	<option data-link="http://www.yandex.com">Brainfuck</option>
	<option data-link="http://www.php.net">LOLCODE</option>
	<option data-link="http://www.asp.net">Node.js</option>
	<option data-link="http://www.microsoft.net">Ruby on Rails</option>
</datalist>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/awesomplete/1.1.1/awesomplete.min.js"></script>

我希望它能帮助您,再见.

I hope it helps you, bye.

这篇关于在选项中添加图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆