HTML完成挪动端固定不动飘浮半全透明检索框

 Question. 难题

在挪动端商城系统软件中,大家经常看到坐落于网页页面顶部有1个检索框,这类检索框博主较为喜爱的是固定不动在网页页面顶部,半全透明飘浮,能模糊看见一部分轮播图的方式。

要制做这样的检索框,技术性重要在于:

  • fixed 检索框精准定位
  • opacity 设定全透明度

Solution. 处理

最先大家界定1个 html 片断:

<!-- 检索框 -->
<header class="bar">
  <form name="search" class="search" id="search" action="">
    <div class="search-row">
      <input type="search" name="word" id="word">
      <span class="placeholder "><span class="iconfont icon-sousuo"></span><span class="text">检索</span></span>
    </div>
  </form>
</header>
<!-- 1个情况图 具体上这里常常是轮播图 -->
<div class="background">
  <img src="bg.jpg">
</div>

header 标识为检索框,下面的 div 为1个情况图。

另外附上 CSS 款式:

<style type="text/css">
body {
  margin: 0;  padding: 0;
  font-size: 14px; font-family: "microsoft yahei",'Arial', 'Verdana','Helvetica', sans-serif;
}
.bar {
  position: fixed; top: 0; left: 0; right: 0; /* 决策了检索框置顶 */
  height: 44px; padding: 0 10px;
  background-color: #fff; opacity: 0.8; /* 检索框半全透明实际效果 */
  z-index: 10;
}
.bar form {
  display: block; padding: 0;margin: 0;
}
.search-row {
  position: relative;
  height: 30px; padding: 7px 0;
}
.search-row input[type=search] {
  position: absolute; top: 7px;
  height: 30px; line-height: 21px; width: 100%; padding: 10px 15px 10px 30px;
  border: 0; border-radius: 6px; outline: 0; background-color: rgba(0,0,0,0.1);
  font-size: 16px; text-align: center;
  z-index: 100;
}
.search-row .placeholder {
  position: absolute; top: 2px; left: 0; right: 0;
  display: inline-block; height: 34px; line-height: 34px;
  border: 0; border-radius: 6px;
  font-size: 16px; text-align: center; color: #999;
  z-index: 1;  
}
.search-row .placeholder .iconfont {
  display: inline-block; width: 19px; line-height: 24px; padding: 10px 0; 
  font-size: 21px; color: #666;
}
.search-row .placeholder .text {
  line-height: 40px;
  vertical-align: top;
}
.background img {
  width: 100%;
}
.active:before {
  position: absolute; top: 11px; left: 5px; right: auto;
  display: block; margin-right: 0;
  font-size: 21px;
}
.active input[type=search] {
  text-align: left
}
.active .placeholder{
  display: none
}
</style>

很长的1段 CSS 款式,可是其关键就两句话position: fixed; /* 决策了检索框置顶 */ 和 background-color: #fff; opacity: 0.8; /* 检索框半全透明实际效果 */,别的的款式均以便网页页面的排版,排版的细节必须各位读者自身写1遍了解,全过程将会必须花销点時间。

这样大家就进行了1个静态数据的检索框:

备注:这里的检索标志应用了 iconfont,读者可自主到 iconfont矢量标志库 免费下载。

至此,大家还必须根据 JS 完成1些动效:

用于完成客户切换键入时「检索」部位标志的切换,基本原理很简易,提升和移除 class 类,这些类界定了款式。

.active:before {
  position: absolute; top: 11px; left: 5px; right: auto;
  display: block; margin-right: 0;
  font-size: 21px;
}
.active input[type=search] {
  text-align: left
}
.active .placeholder{
  display: none
}
<script type="text/javascript">
/* 键入框获得到聚焦点 表明客户正在键入 */
$("#word").focusin(function() {
  $(".search-row").addClass("active iconfont icon-sousuo");
});
/* 键入框丧失聚焦点 表明客户键入结束 */
$("#word").focusout(function() {
  /* 分辨客户是不是有內容键入 */
  if ($(this).val()=="") {
    /* 沒有內容键入 更改款式 */
    $(".search-row").removeClass("active iconfont icon-sousuo");
  } else {
    /* 有內容键入 维持款式 并递交表单 */
    $("#search").submit();
  }
});
</script>

备注:这里必须引进 jQuery,干万别忘了!

Extension. 拓展

详细 html 编码:

<!DOCTYPE html>
<html>
<head>
<title></title>
<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">
<link rel="stylesheet" type="text/css" href="iconfont/iconfont.css">
<script type="text/javascript" src="jquery⑴.11.1.min.js"></script>
<style type="text/css">
body {
  margin: 0;  padding: 0;
  font-size: 14px; font-family: "microsoft yahei",'Arial', 'Verdana','Helvetica', sans-serif;
}
.bar {
  position: fixed; top: 0; left: 0; right: 0; /* 决策了检索框置顶 */
  height: 44px; padding: 0 10px;
  background-color: #fff; opacity: 0.8; /* 检索框半全透明实际效果 */
  z-index: 10;
}
.bar form {
  display: block; padding: 0;margin: 0;
}
.search-row {
  position: relative;
  height: 30px; padding: 7px 0;
}
.search-row input[type=search] {
  position: absolute; top: 7px;
  height: 30px; line-height: 21px; width: 100%; padding: 10px 15px 10px 30px;
  border: 0; border-radius: 6px; outline: 0; background-color: rgba(0,0,0,0.1);
  font-size: 16px; text-align: center;
  z-index: 100;
}
.search-row .placeholder {
  position: absolute; top: 2px; left: 0; right: 0;
  display: inline-block; height: 34px; line-height: 34px;
  border: 0; border-radius: 6px;
  font-size: 16px; text-align: center; color: #999;
  z-index: 1;  
}
.search-row .placeholder .iconfont {
  display: inline-block; width: 19px; line-height: 24px; padding: 10px 0; 
  font-size: 21px; color: #666;
}
.search-row .placeholder .text {
  line-height: 40px;
  vertical-align: top;
}
.background img {
  width: 100%;
}
.active:before {
  position: absolute; top: 11px; left: 5px; right: auto;
  display: block; margin-right: 0;
  font-size: 21px;
}
.active input[type=search] {
  text-align: left
}
.active .placeholder{
  display: none
}
</style>
</head>
<body>
<!-- 检索框 -->
<header class="bar">
  <form name="search" class="search" id="search" action="">
    <div class="search-row">
      <input type="search" name="word" id="word">
      <span class="placeholder "><span class="iconfont icon-sousuo"></span><span class="text">检索</span></span>
    </div>
  </form>
</header>
<!-- 1个情况图 具体上这里常常是轮播图 -->
<div class="background">
  <img src="bg.jpg">
</div>
</body>
<script type="text/javascript">
/* 键入框获得到聚焦点 表明客户正在键入 */
$("#word").focusin(function() {
  $(".search-row").addClass("active iconfont icon-sousuo");
});
/* 键入框丧失聚焦点 表明客户键入结束 */
$("#word").focusout(function() {
  /* 分辨客户是不是有內容键入 */
  if ($(this).val()=="") {
    /* 沒有內容键入 更改款式 */
    $(".search-row").removeClass("active iconfont icon-sousuo");
  } else {
    /* 有內容键入 维持款式 并递交表单 */
    $("#search").submit();
  }
});
</script>
</html>

总结

以上所述是网编给大伙儿详细介绍的HTML完成挪动端固定不动飘浮半全透明检索框,期待对大伙儿有一定的协助,假如大伙儿有任何疑惑请给我留言,网编会立即回应大伙儿的。在此也十分谢谢大伙儿对脚本制作之家网站的适用!