们已经习惯了微信小程序、快应用这样轻量级 App 的存在。
它们兼顾低占用和即用即走的特点,又不失恰到好处的功能。
但面对 BAT 全家桶和无数网页时。
你可曾想过:
给淘宝安排一个快应用版?
让它的体积直接减少 98.5%!
或是刷网页像刷客户端?
以前想要实现这个目标,我们得等每年一次的系统更新或 Web 技术进步。
现在呢,只需一个 Fusion App。
Fusion App 是【一个木函】(我们之前安利过的神器)作者的另一代表作。
它的作用就是将网页转化为应用。
Fusion App 发展至今已经有不少成熟的应用,无需自己动手就能使用,大家可以直接跳转到文末下载
Fusion App 的实现原理不复杂,主要是用安卓系统的原生组件代替网页组件元素,用户可以自由定制、增删这些组件。
比如去除广告弹窗、推荐位,将二级功能统一到侧边栏等。
淘宝 Fusion App 版
让网页像真的客户端一样,简洁流畅易用。
接着我们来演示下 Fusion App 网页转应用的基本操作。
以淘宝触屏版(https://h5.m.taobao.com/)为例。
淘宝触屏版
(Fusion App 中有个 「UI 模板」概念,创键一个网页转应用等于创建一个模板)
第一步,点击加号开始创建。
因为淘宝网页版以底栏为主,所以我们选择底栏模板。
第二步,创建完应用名,接着创建一个图标。
Fusion App 自带图标库,用户也可以自定义,或从手机图库中选一张喜欢的图片。
第三步,创建完图标,会有一大堆选项,这些选项都不用管。
只在网页控制中填入淘宝网页版的网址即可。
到这里我们已经完成了简版淘宝的配置工作。
如果点击右上角的「三角形」预览的话,会是这样。(Fusion App 默认效果)
第四步,显然,我们要把项目 1、项目 2 修改为淘宝底栏的样子。
如何添加呢?
切换到组件选项卡,点击项目 1,随便命一个名字。
比如我希望我的应用开头显示淘宝主页,那就叫主页。
随便选一个图标,接着填入网址。
But,网址怎么填?
在电脑上打开淘宝触屏版网址,看到这个畸形界面不要慌。
按 F12(或 Ctrl+Shift+I),点击设备切换图标即可。
这时,点击一下首页选项,将地址栏出现的网址,填写到刚才的空缺中。
效果如图,项目 2、3、4 可依此类推。
如果你不需要那么多选项,长按项目即可删除。
第五步,到这里我们已经完成一大半工作,接着在属性栏调整下应用配色就差不多了。
最后经过一些其他修改,我们就可以将应用打包出来,安装到本地。
如你所见,将之安装到本地后,能够与官方原版共存。
一条尾巴
上述案例其实比较基础,只能起到入门作用。
限于篇幅,删除美化等进阶教程的我们放在回复中,感兴趣的机友们可以尝试。
虽然使用 Fusion App 的确要花点时间, 但我们能想到的,其他开发者也早就做到了。
比如文章开头的 Fusion App 版淘宝就是某位热心开发者的作品。
此外还有小智工具箱这种无所不能的应用
更不要说 Fusion App 贴吧、微博等等……
好啦,所有提及应用已经打包完成,咱们回复见~
微信搜索【锋潮评测室】
后台回复 300 下载安装包
网页封装APP,也称为混合APP或WebView APP,是一种将网页内容封装到原生APP壳中的技术。这种APP本质上是在原生应用中嵌入了一个网页浏览器组件(WebView),通过这个组件来加载和显示网页内容。
网页封装APP技术为企业和个人提供了一种快速、经济的方式来开发移动应用。虽然它可能在性能和用户体验上略逊于原生APP,但其低成本和快速开发的优势使其成为许多项目的理想选择。
要用到的组件:Swiper中文网-轮播图幻灯片js插件,H5页面前端开发
Html代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title></title>
<script src="js/jquery-3.4.1.min.js"></script>
<script src="js/swiper-4.5.3/js/swiper.min.js"></script>
<link rel="stylesheet" href="js/swiper-4.5.3/css/swiper.min.css" rel="external nofollow" >
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<div class="swiper-container box">
<div class="swiper-wrapper main-timeline">
<div class="swiper-slide timeline fd-active-line">
<a href="javascript:void(0);" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="timeline-content">
<div class="timeline-year">
<span>2022</span>
</div>
</a>
<div class="show_timeline"></div>
</div>
<div class="swiper-slide timeline">
<a href="javascript:void(0);" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="timeline-content">
<div class="timeline-year">
<span>2021</span>
</div>
</a>
<div class="show_timeline"></div>
</div>
<div class="swiper-slide timeline">
<a href="javascript:void(0);" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="timeline-content">
<div class="timeline-year">
<span>2020</span>
</div>
</a>
<div class="show_timeline"></div>
</div>
<div class="swiper-slide timeline">
<a href="javascript:void(0);" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="timeline-content">
<div class="timeline-year">
<span>2019</span>
</div>
</a>
<div class="show_timeline"></div>
</div>
<div class="swiper-slide timeline">
<a href="javascript:void(0);" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="timeline-content">
<div class="timeline-year">
<span>2018</span>
</div>
</a>
<div class="show_timeline"></div>
</div>
<div class="swiper-slide timeline">
<a href="javascript:void(0);" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="timeline-content">
<div class="timeline-year">
<span>2017</span>
</div>
</a>
<div class="show_timeline"></div>
</div>
</div>
</div>
<ul class="event_list">
<div>
<h3 id="2022">2022</h3>
<img src="images/sl01.PNG" alt="">
</div>
<div style="display: none;">
<h3 id="2021">2021</h3>
<img src="images/sl02.PNG" alt="">
</div>
<div style="display: none;">
<h3 id="2020">2020</h3>
<img src="images/sl03.PNG" alt="">
</div>
<div style="display: none;">
<h3 id="2019">2019</h3>
<img src="images/sl04.PNG" alt="">
</div>
<div style="display: none;">
<h3 id="2018">2018</h3>
<img src="images/sl05.PNG" alt="">
</div>
<div style="display: none;">
<h3 id="2017">2017</h3>
<img src="images/sl06.PNG" alt="">
</div>
</ul>
</div>
<script>
$(function () {
$(".main-timeline .timeline").click(function () {
var target=$(this).siblings().length;
if (target >=1) {
var index=$(this).index()
$(this).addClass('fd-active-line').siblings().removeClass('fd-active-line')
$(this).parent().parent().siblings('.event_list').children().eq(index).show().siblings().hide()
}
})
var swiper=new Swiper('.swiper-container', {
slidesPerView: 4,
direction: 'vertical',
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
on: {
resize: function () {
swiper.changeDirection(getDirection());
}
}
});
});
</script>
</body>
</html>
CSS代码:
.page{
width: 100%;
}
.main-timeline{
font-family: Arial, Helvetica, sans-serif;
width: 200px;
position: relative;
float: left;
}
.main-timeline:after{
content: '';
display: block;
clear: both;
}
.main-timeline .timeline{
width: 4%;
margin: 0 50px 0 0;
float: left;
position: relative;
}
.main-timeline .timeline-content{
border-radius: 15px 0 15px 15px;
display: block;
position: relative;
}
.main-timeline .timeline-content:hover{
text-decoration: none;
}
.fd-active-line .timeline-content:after {
content: '';
background-color: #00A79B;
height: 18px;
width: 15px;
position: absolute;
right: -43px;
top: 27px;
/* clip-path: polygon(100% 0, 0 0, 0 100%); */
}
.main-timeline .timeline-year {
color: #fff;
background-color: #00A79B;
font-size: 24px;
font-weight: 900;
text-align: center;
line-height: 80px;
height: 80px;
width: 80px;
border-radius: 50%;
position: absolute;
right: -120px;
top: -40px;
}
.main-timeline .timeline-year:after {
content: '';
height: 100px;
width: 100px;
border: 8px solid #00A79B;
border-left-color: transparent;
border-radius: 50%;
transform: translateX(-50%) translateY(-50%) rotate(-20deg);
position: absolute;
left: 50%;
top: 50%;
}
.main-timeline .timeline-icon {
color: #fff;
background-color: #00A79B;
font-size: 35px;
text-align: center;
line-height: 50px;
height: 50px;
width: 50px;
border-radius: 50%;
transform: translateY(-50%);
position: absolute;
top: 50%;
left: -25px;
transition: all 0.3s;
}
.main-timeline .title {
color: #222;
font-size: 20px;
font-weight: 900;
text-transform: uppercase;
letter-spacing: 1px;
margin: 0 0 7px 0;
}
.main-timeline .description {
color: #222;
font-size: 15px;
letter-spacing: 1px;
text-align: justify;
margin: 0 0 5px;
}
.main-timeline .timeline:nth-child(even) .timeline-content:after {
transform: rotateY(180deg);
right: auto;
left: 123px;
}
.main-timeline .timeline:nth-child(even) .timeline-year:after {
transform: translateX(-50%) translateY(-50%) rotate(200deg);
}
.main-timeline .timeline:nth-child(even) .timeline-icon {
left: auto;
right: -25px;
}
.timeline:nth-child(4n+2) .timeline-content,
.timeline:nth-child(4n+2) .timeline-year:after {
border-color: #9E005D;
}
.timeline:nth-child(4n+2) .timeline-year:after {
border-left-color: transparent;
}
.timeline:nth-child(4n+2) .timeline-content:after,
.timeline:nth-child(4n+2) .timeline-icon,
.timeline:nth-child(4n+2) .timeline-year {
background-color: #9E005D;
}
.timeline:nth-child(4n+3) .timeline-content,
.timeline:nth-child(4n+3) .timeline-year:after {
border-color: #f24f0e;
}
.timeline:nth-child(4n+3) .timeline-year:after {
border-left-color: transparent;
}
.timeline:nth-child(4n+3) .timeline-content:after,
.timeline:nth-child(4n+3) .timeline-icon,
.timeline:nth-child(4n+3) .timeline-year {
background-color: #f24f0e;
}
.timeline:nth-child(4n+4) .timeline-content,
.timeline:nth-child(4n+4) .timeline-year:after {
border-color: #0870C5;
}
.timeline:nth-child(4n+4) .timeline-year:after {
border-left-color: transparent;
}
.timeline:nth-child(4n+4) .timeline-content:after,
.timeline:nth-child(4n+4) .timeline-icon,
.timeline:nth-child(4n+4) .timeline-year {
background-color: #0870C5;
}
@media screen and (max-width:767px) {
.main-timeline:before {
display: none;
}
.main-timeline .timeline {
width: 100%;
padding-top: 80px;
padding-right: 12px;
margin-bottom: 20px;
}
.main-timeline .timeline:nth-child(even) {
padding-left: 10px;
padding-top: 80px;
margin-bottom: 20px;
}
.main-timeline .timeline-content,
.main-timeline .main-timeline .timeline:nth-child(even) .timeline-content {
background-color: #fff;
padding-top: 25px;
}
.main-timeline .timeline-content:after {
display: none;
}
.main-timeline .timeline-year {
font-size: 24px;
line-height: 70px;
height: 70px;
width: 70px;
right: 0;
top: -65px;
}
.main-timeline .timeline-year:after {
display: none;
}
.main-timeline .timeline:nth-child(even) .timeline-year {
left: 3px;
}
}
@media screen and (max-width:567px) {
.main-timeline .title {
font-size: 18px;
}
}
.swiper-container {
width: 205px;
height: 500px;
float: left;
}
.swiper-slide {
text-align: center;
font-size: 18px;
background: #fff;
display: -webkit-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
-webkit-justify-content: center;
justify-content: center;
-webkit-box-align: center;
-ms-flex-align: center;
-webkit-align-items: center;
align-items: center;
}
@media (max-width: 760px) {
.swiper-button-next {
right: 20px;
transform: rotate(90deg);
}
.swiper-button-prev {
left: 20px;
transform: rotate(90deg);
}
}
.event_list img {
width: 880px;
height: 470px;
object-fit: cover;
}
.show_timeline {
width: 3px;
height: 100%;
background: #a7a7a5;
position: absolute;
left: 82px;
z-index: -1;
}
效果图:
*请认真填写需求信息,我们会在24小时内与您取得联系。