论怎样在妹夫大端web前端实现自定义原生控件的样式

2015/10/30 · HTML5 ·
原生控件

原稿出处:
卖烧烤夫斯基   

手提式有线电电话机支付webapp的同学肯定蒙受过这么难题,如何为丑极了的手提式有线电话机成分采纳自定义的体裁。首先,要弄通晓怎么要定义手提式有线电话机原生控件的样式,就供给探视手提式有线电话机的那二个原生框样式的丑陋摸样:

android:

图片 1

论如何在手机端web前端实现自定义原生控件的样式,手机端样式调用适配web端的代码。ios:

图片 2

方案1
留意一点: 貌似大漠二〇一九年(壹柒)年推荐使用vhvw拓展适配了。
https://github.com/amfe/lib-flexible/issues/154
方案2
大漠 使用Flexible完毕手淘H5页面包车型地铁巅峰适配
文章地址:
https://github.com/amfe/article/issues/17
参阅了大漠的文章
除了那么些之外大段文字应用px来书写,别的基本采取rem 进行Flexible拓展示公布局
由于以后部分浏览器不补助 vw,所以小编后天选取的是 master
的分支 版本0.3.2

web移动端前端营造(含样式布局,纯净版不含其余样式框架),web样式

@charset 'utf-8';
*{margin:0;padding:0; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-text-size-adjust:none; } /* highlight equal to outline,only dose it has a effect in google chrome lite browser */
*:focus,*:active {outline:none;}
html, body {  height:100%;}
body{ width: 100%;font-family: \5FAE\8F6F\96C5\9ED1,\5B8B\4F53;-webkit-user-select:none;}
p,a,span,textarea,b,input,dt,dd { color: #666;font-size: 0.9rem;}
ul, ol{list-style:none;}
img{border:none;}
a { text-decoration:none;}
textarea {resize:none;}
input[type=button],button{text-align: center; background: none; border: 0; outline: none; }
input { background: white; border: none; outline: none;}

/*占位符颜色*/
input::-webkit-input-placeholder, textarea::-webkit-input-placeholder { color:#ccc; }
input:-moz-placeholder, textarea:-moz-placeholder { color:#ccc; }
input::-moz-placeholder, textarea::-moz-placeholder { color: #ccc; }
input:-ms-input-placeholder, textarea:-ms-input-placeholder { color: #ccc; }

/* 浮动 */
.fl { float: left !important; }
.fr { float: right !important; }
.clear { clear: both; }

/* 功能 */
.hide { display:none !important; }/*隐藏*/
.ellipsis { overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;word-break:keep-all; } /* 字数省略 */
.keep { position:fixed !important;border-bottom: #ccc 1px solid !important; } /*滚动保持*/
.mask {display: none;position: fixed;left: 0;z-index: 11;width: 100%; height: 100%;background-color:rgba(0, 0, 0, 0.4);}/*遮罩层*/

/* 效果 */
.shadow,.all-shadow * {box-shadow: 0 0 .3rem #ddd !important;}
.gradient,.all-gradient * {background: -webkit-linear-gradient(top, #fff4f4,#fff);}
.radius,.all-radius * { border-radius: .2em;}
.left-radius {border-top-left-radius: .2em;border-bottom-left-radius: .2em;}
.right-radius {border-top-right-radius: .2em;border-bottom-right-radius: .2em;}
.top-radius {border-top-left-radius: .2em;border-top-right-radius: .2em;}


/* ---------------------------------- 主题A开始 ---------------------------------- */
/* 母版样式 */
.app{display:table;width:100%;height:100%;}
.app>* { display: table-row;  }
.app>:nth-child(2) { width: 100%;height:100%; }
.app>:first-child,.header{top:0; width: 100%;height: 2.5rem;line-height:2.5rem;}
.app>:last-child,.footer{ bottom:0;width: 100%; /*height: 4rem;*/}/*height:无定义高度,当需要页脚时可在当前页定义页脚,并添加标签<div class="footer"></div>即可*/
.header,.footer{ position:fixed;display:table;}
.header>*{display:table-cell;font-size:1rem;color:white;}

.A-color{ color: #00c1d9 }
.A-color-gray {color: #ccc}
.A-color-error { color: #ff8181 }
.A-color-success { color:green }
.A-color-disabled { color: #999 }

.A-border { border-color: #ccc }
.A-border-top{ border-top:1px solid #ccc}
.A-border-bottom {border-bottom:1px solid #ccc }
.A-border-left { border-left:1px solid #ccc  }
.A-border-right{ border-right:1px solid #ccc }

.A-bg {background-color:#00c1d9 !important } /* 主题点击效果 */
.A-bg-body { background-color: #d9d9d9; } /* 主题body背景 */
.A-bg-bar {background-color:#e6e6e6 !important } /* 主题点击效果 */

.A-icon-filter{ background: url(/Image/Ico/filter.png) center no-repeat;background-size:1.4rem;}
.A-icon-user{ background: url(/Image/Ico/user.png) center no-repeat;background-size:1.4rem;}
.A-icon-arrow-down{ background: url(/Image/Ico/arrow_down.png) 1rem center no-repeat;background-size:.8rem .4rem;}

.A-btn-all,.A-btn {} /* 主题按钮 */
.A-btn-click {background-color:#00b5cb !important } /* 主题点击效果 */
/* ---------------------------------- 主题A结束 ---------------------------------- */

asp.net 母版页:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
    <title>@ViewBag.Title</title>
    @Styles.Render("~/Css")
    @RenderSection("css", false)
</head>
<body>
<div class="app">
    <div></div>
    <div>@RenderBody()</div>
    <div></div>
</div>
@Scripts.Render("~/Js")
@RenderSection("js", required: false)
</body>
</html>

asp.net 首页:

@{
    ViewBag.Title = "首页";
}
@section css
{
    <style>
        .app > :last-child, .footer { height:2.5rem }
        .city-btn { width: 5.5rem;text-indent:2.3rem; }
        .filter-btn,.user-btn{ width:3.2rem;}        
    </style>
}
<div class="header A-bg">
    <a class="city-btn A-icon-arrow-down A-btn"></a>
    <h1></h1>
    <a class="filter-btn A-icon-filter A-btn"></a>
    <a class="user-btn A-icon-user A-btn"></a>
</div>
<div class="body">
     //...
</div>
<div class="footer A-bg"></div>
@section js
{
    <script>
        //...
    </script>
}

来得结果:

图片 3

@charset ‘utf-8’;* { margin : 0 ; padding : 0 ; -moz-box-sizing :
border-box ; -webkit…

代码:/Files/cappuccino/Compass.rar

迫于的抉择

看完了那一个难看的界面成分,大家就足以精通当大家把他们暴光在产品同学的眼中时,那种层层的杀气了。能够见到,界面成分十三分其貌不扬,产品兄弟是肯定不会接受的。但是,不得不说这一个控件在触及后的功力比pc机上的要炫酷。这之中以apple机的滚筒接纳最佳杰出.以下是它们触发后调用原生控件的效果:

android:

图片 4图片 5图片 6

ios:

图片 7图片 8图片 9

不得不说这几个样式原生弹出样式是相符大家统一筹划的口径的,因为它即反映了UI界面包车型大巴和睦和体验度,又不损耗任何web品质,关键是大家什么样都不要求做。产品BZJ君看到了,指明要在apple机下要滚筒的作用用来摘取日期只怕下来单。如若我们不能够化解掉界面文本框的体制难题,那么不论是前边的意义多炫酷,始终使不能够让人收受的。可能你会想花时间写类似的机能?作者不否认你能够写出来,不过急需多少日子的工作量吗?也不在少数人摘取了插件的措施。通过jq插件(假若您的花色中没在运用jq,为了那一个效应无奈下载jq和其插件)来促成,其实是万分吃力不讨好的工作。八个是插件那种东西出了难题还是转移了需求后它会变得非凡的倒霉扩张,第1个自然是思量到财富加载,在手提式有线电话机端尤其必要思虑。因而,接纳插件是下下策!

多少个的概念定义:

缓解格局

难题来了,既想要弹出层的炫酷效果,又想自定义控件在界面呈现的体裁。如何是好呢?露珠曾经尝试过最简单易行的章程去重写css去改变它们的体裁,然而固然在google若干小时,也尚未找到如意的结果。露珠也尝试过-webkit-appearance属性,但它也呈现不顺畅。况且大家还必要匹配多机型(安卓,苹果,wp?)。无论如何,走改变原来样式的路是无效的。露珠经过一番思虑,找到了自认为分外好的消除格局,也是那篇博文的宗旨:既然控件在页面包车型客车体制无法转移,那就暗藏它,不过!不是用display:none隐藏,也不是把width和height设置为0,大家愿意的是看不到它们的本来面目样式,而愿意保留对它们的tap和focus事件。不过除了以上的不二法门,还有怎么着能使它们看不见呢?聪明的你一定想到了,对,正是opacit:0,
通过将控件的不折射率设置为0,大家能够让要素继续让它留在界面上,并且维持随时响应focus事件的情状。我们要做的,是为该控件设置为相对定位,覆盖在我们自定义样式的2个element上。那样,用户看到的是上面包车型大巴element,但当他的手去触碰此element时,他实在触碰的是截然透鲜明留在界面上的原生控件!如下图所示:

图片 10

那依然首先步,接下去我们须要为控件绑定响应事件,大部分意况下我们须要绑定的事件都以onchange,1旦选用成功,就把值复制到自定义的element上去。那样马到成功了!不管你是透过表单或许post提交,你取到的值如故是控件的值,自定义的element只承担展现,不担负作业!

图片 11

88必发娱乐 ,物理像素(physical pixel)

贰个大体像素是显示器(手机显示器)上一丁点儿的大体展现物理单元,在操作系统的调度下,每多个装置都有温馨的颜色值和亮度值。即是那个装备像素的1线距离诈欺了小编们肉眼看到的图像效果。

图片 12

image.png

网站地图xml地图