两个小时完成一个简单项目——新闻App、新闻小程序,循序渐进的掌握uni-app
<h2>效果图</h2><p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230409203811531-1168993367.png"></p>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230409203839663-1975975976.png"><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230409203923066-813070585.png"></p>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230409204001396-1109394454.png"><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230409204023504-1690105318.png"></p>
<h2>一、创建项目</h2>
<p><code>uni-app</code> 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/飞书/QQ/快手/钉钉/淘宝)、快应用等多个平台。</p>
<p><code>uni-app</code>在手,做啥都不愁。即使不跨端,<code>uni-app</code>也是更好的小程序开发框架(详见)、更好的App跨平台框架、更方便的H5开发框架。不管领导安排什么样的项目,你都可以快速交付,不需要转换开发思维、不需要更改开发习</p>
<h3>1、创建新项目配置初始化</h3>
<h4>1.1、创建一个项目,项目名称为新新闻,自己做案例的时候可以使用随便起名</h4>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406105523064-621247371.png"></p>
<p>运行结果</p>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406111624725-2081432930.png"></p>
<h4>1.2、项目文件</h4>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406111420534-1591630911.png"></p>
<h4>1.3、在page文件下创建一个user页面</h4>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406111927039-2039764546.png"></p>
<h4>1.4、在pages.json中配置内容</h4>
<p>添加一个tabBar,图标在inconfont可免费下载</p>
<div class="cnblogs_code"><img src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif"><img id="code_img_opened_1dba237b-e174-4276-853d-fde03c66b005" class="code_img_opened lazyload" style="display: none" data-src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif">
<div id="cnblogs_code_open_1dba237b-e174-4276-853d-fde03c66b005" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 0, 0, 1)">{
</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">pages</span><span style="color: rgba(128, 0, 0, 1)">"</span>: [ <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">pages数组中第一项表示应用启动页,参考:</span><span style="color: rgba(0, 128, 0, 1); text-decoration: underline">https://uniapp.dcloud.io/collocation/pages</span>
<span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">path</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">pages/index/index</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">style</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">: {
</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">navigationBarTitleText</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">新新闻</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
}
}
,{
</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">path</span><span style="color: rgba(128, 0, 0, 1)">"</span> : <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">pages/user/user</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">style</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> :
{
</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">navigationBarTitleText</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">个人中心</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">enablePullDownRefresh</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">
}
}
],
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 全局配置</span>
<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">globalStyle</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">: {
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 有比较亮的背景颜色尽量搭配白色文字</span>
<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">navigationBarTextStyle</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">white</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">navigationBarTitleText</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">新新闻</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">navigationBarBackgroundColor</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">#31C27C</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">backgroundColor</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">#F8F8F8</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
},
</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">uniIdRouter</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">: {},
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 底部导航,路由跳转</span>
<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">tabBar</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">: {
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 颜色,选中颜色,尽量选择跟图标一样的颜色</span>
<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">color</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">#666</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">selectedColor</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">#31C27C</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">list</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">:[
{
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 头部标题</span>
<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">text</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">首页</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 路径</span>
<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">pagePath</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">pages/index/index</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 底部图标</span>
<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">iconPath</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">static/images/home.png</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 底部选中图标</span>
<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">selectedIconPath</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">static/images/home-h.png</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
},
{
</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">text</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">个人</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">pagePath</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">pages/user/user</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">iconPath</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">static/images/user.png</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">selectedIconPath</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">static/images/user-h.png</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
}
]
}
}</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>配置后效果如下</p>
<p> <img alt="" width="172" height="305" loading="lazy" src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406114756149-914804313.png"> <img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406114807235-2031133171.png"></p>
<h3>2、实现横向滚动条样式</h3>
<h4>2.1、index/index.vue</h4>
<div class="cnblogs_code"><img src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif"><img id="code_img_opened_4a3df7c1-8c90-4ebc-92bd-95874527abe6" class="code_img_opened lazyload" style="display: none" data-src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif">
<div id="cnblogs_code_open_4a3df7c1-8c90-4ebc-92bd-95874527abe6" class="cnblogs_code_hide">
<pre><template>
<!-- 给一个大的盒子 -->
<view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">home</span><span style="color: rgba(128, 0, 0, 1)">"</span>>
<!--导航栏 可滚动视图区域 scroll-x允许横向-->
<scroll-view scroll-x <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">navscroll</span><span style="color: rgba(128, 0, 0, 1)">"</span>>
<view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">item</span><span style="color: rgba(128, 0, 0, 1)">"</span> v-<span style="color: rgba(0, 0, 255, 1)">for</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">item in 8</span><span style="color: rgba(128, 0, 0, 1)">"</span>>国内</view>
</scroll-view>
<!-- 内容 -->
<view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">row</span><span style="color: rgba(128, 0, 0, 1)">"</span>>每一行新闻内容</view>
</view>
</template>
<script><span style="color: rgba(0, 0, 0, 1)">
export </span><span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(0, 0, 0, 1)"> {
data() {
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> {
title: </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">Hello</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
}
},
onLoad() {
},
methods: {
}
}
</span></script>
<style lang=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">scss</span><span style="color: rgba(128, 0, 0, 1)">"</span> scoped><span style="color: rgba(0, 0, 0, 1)">
.navscroll{
height: 100rpx;
background: #d7d7d7;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 显示这个导航不换行</span>
white-<span style="color: rgba(0, 0, 0, 1)">space: nowrap;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 这个是给导航滑块的给隐藏,虽然小程序没有显示,但是h5会出现</span>
/deep/ ::-webkit-<span style="color: rgba(0, 0, 0, 1)">scrollbar {
width: 4px </span>!<span style="color: rgba(0, 0, 0, 1)">important;
height: 1px </span>!<span style="color: rgba(0, 0, 0, 1)">important;
overflow: auto </span>!<span style="color: rgba(0, 0, 0, 1)">important;
background: transparent </span>!<span style="color: rgba(0, 0, 0, 1)">important;
</span>-webkit-appearance: auto !<span style="color: rgba(0, 0, 0, 1)">important;
display: block;
}
.item{
font</span>-<span style="color: rgba(0, 0, 0, 1)">size:40rpx;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 显示一行</span>
display: inline-<span style="color: rgba(0, 0, 0, 1)">block;
line</span>-<span style="color: rgba(0, 0, 0, 1)">height: 100rpx;
padding: </span><span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 30rpx;
color: #</span><span style="color: rgba(128, 0, 128, 1)">333</span><span style="color: rgba(0, 0, 0, 1)">;
}
}
</span></style></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p><img alt="" width="200" height="355" loading="lazy" src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406123650337-2045743837.png"></p>
<h3>3、公共模块定义components</h3>
<h4>3.1、创建组件components</h4>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406124536687-625845616.png"></p>
<p>3.2、编写样式</p>
<p>把组件newsbox引入index.vue</p>
<p> <img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406132107470-342005316.png"></p>
<p>在newsbox.vue编写内容布局及样式(字体改36rpx)</p>
<div class="cnblogs_code"><img src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif"><img id="code_img_opened_0efa69e4-d2d9-42b6-840b-3d62a9398a71" class="code_img_opened lazyload" style="display: none" data-src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif">
<div id="cnblogs_code_open_0efa69e4-d2d9-42b6-840b-3d62a9398a71" class="cnblogs_code_hide">
<pre><template>
<view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">newsbox</span><span style="color: rgba(128, 0, 0, 1)">"</span>>
<!-- 左图 右文 -->
<view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">pic</span><span style="color: rgba(128, 0, 0, 1)">"</span>>
<image src=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">../../static/images/0.jpg</span><span style="color: rgba(128, 0, 0, 1)">"</span> mode=<span style="color: rgba(128, 0, 0, 1)">""</span>></image>
</view>
<!-- 文字又分上面标题,下面作者浏览量 -->
<view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">text</span><span style="color: rgba(128, 0, 0, 1)">"</span>>
<view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">title</span><span style="color: rgba(128, 0, 0, 1)">"</span>>
<view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">t</span><span style="color: rgba(128, 0, 0, 1)">"</span>><span style="color: rgba(0, 0, 0, 1)">
默认新闻标题默认新闻标题默认新闻标题默认新闻标题默认新闻标题默认新闻标题默认新闻标题
</span></view>
</view>
<view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">info</span><span style="color: rgba(128, 0, 0, 1)">"</span>>
<text>作者名称</text>
<text>998浏览</text>
</view>
</view>
</view>
</template>
<script><span style="color: rgba(0, 0, 0, 1)">
export </span><span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(0, 0, 0, 1)"> {
name:</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">newsbox</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
data() {
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> {
};
}
}
</span></script>
<style lang=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">scss</span><span style="color: rgba(128, 0, 0, 1)">"</span>><span style="color: rgba(0, 0, 0, 1)">
.newsbox{
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 显示一行</span>
<span style="color: rgba(0, 0, 0, 1)"> display: flex;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 图片样式</span>
<span style="color: rgba(0, 0, 0, 1)"> .pic{
width: 230rpx;
height: 160rpx;
image{
width:</span><span style="color: rgba(128, 0, 128, 1)">100</span>%<span style="color: rgba(0, 0, 0, 1)">;
height: </span><span style="color: rgba(128, 0, 128, 1)">100</span>%<span style="color: rgba(0, 0, 0, 1)">;
}
}
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 文字样式 有上下结构</span>
<span style="color: rgba(0, 0, 0, 1)"> .text{
border: 1rpx solid red;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 自动把剩下的填满</span>
flex:<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">;
padding</span>-<span style="color: rgba(0, 0, 0, 1)">left: 20rpx;
display: flex;
flex</span>-<span style="color: rgba(0, 0, 0, 1)">direction: column;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 弹性项目以均匀的间距放置在项目被推到开始和最后一个项目被推到结束的地方</span>
justify-content: space-<span style="color: rgba(0, 0, 0, 1)">between;
.title{
font</span>-<span style="color: rgba(0, 0, 0, 1)">size: 38rpx;
color: #</span><span style="color: rgba(128, 0, 128, 1)">333</span><span style="color: rgba(0, 0, 0, 1)">;
.t{
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 这边给标题文字两行显示省略号处理</span>
text-overflow: -o-ellipsis-<span style="color: rgba(0, 0, 0, 1)">lastine;
overflow: hidden; </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">溢出内容隐藏</span>
text-overflow: ellipsis; <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">文本溢出部分用省略号表示</span>
display: -webkit-box; <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">特别显示模式</span>
-webkit-line-clamp: <span style="color: rgba(128, 0, 128, 1)">2</span>; <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">行数</span>
line-clamp: <span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">;
</span>-webkit-box-orient:vertical; <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">盒子中内容竖屏排列</span>
<span style="color: rgba(0, 0, 0, 1)"> }
}
.info{
font</span>-<span style="color: rgba(0, 0, 0, 1)">size: 26rpx;
color: #</span><span style="color: rgba(128, 0, 128, 1)">999</span><span style="color: rgba(0, 0, 0, 1)">;
text{
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> jianju间距</span>
padding-<span style="color: rgba(0, 0, 0, 1)">right: 30rpx;
}
}
}
}
</span></style></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p><img alt="" width="219" height="388" loading="lazy" src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406132843458-712228267.png"></p>
<h3>4、布局个人中心页面定义组件默认值</h3>
<p>4.1、在newsbox组件写插值语法,</p>
<p>newsbox.vue</p>
<div class="cnblogs_code"><img src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif"><img id="code_img_opened_c688a4e9-974d-4d58-b5d2-e6f8aec9e48a" class="code_img_opened lazyload" style="display: none" data-src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif">
<div id="cnblogs_code_open_c688a4e9-974d-4d58-b5d2-e6f8aec9e48a" class="cnblogs_code_hide">
<pre><template>
<view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">newsbox</span><span style="color: rgba(128, 0, 0, 1)">"</span>>
<!-- 左图 右文 -->
<view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">pic</span><span style="color: rgba(128, 0, 0, 1)">"</span>>
<image :src=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">item.picture</span><span style="color: rgba(128, 0, 0, 1)">"</span> mode=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">aspectFill</span><span style="color: rgba(128, 0, 0, 1)">"</span>></image>
</view>
<!-- 文字又分上面标题,下面作者浏览量 -->
<view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">text</span><span style="color: rgba(128, 0, 0, 1)">"</span>>
<view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">title</span><span style="color: rgba(128, 0, 0, 1)">"</span>>
<view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">t</span><span style="color: rgba(128, 0, 0, 1)">"</span>><span style="color: rgba(0, 0, 0, 1)">
{{item.title}}
</span></view>
</view>
<view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">info</span><span style="color: rgba(128, 0, 0, 1)">"</span>>
<text>{{item.author}}</text>
<text>{{item.hits}}浏览</text>
</view>
</view>
</view>
</template>
<script><span style="color: rgba(0, 0, 0, 1)">
export </span><span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(0, 0, 0, 1)"> {
name:</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">newsbox</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 接受组件,然后是一个对象,</span>
<span style="color: rgba(0, 0, 0, 1)"> props:{
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 定义一个对象</span>
<span style="color: rgba(0, 0, 0, 1)"> item:{
type:Object,
</span><span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(0, 0, 0, 1)">(){
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">{
title:</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">组件内默认标题</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
author:</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">张小三</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
hits:</span><span style="color: rgba(128, 0, 128, 1)">688</span><span style="color: rgba(0, 0, 0, 1)">,
picture:</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">../../static/images/nopic.jpg</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
}
}
}
},
data() {
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> {
};
}
}
</span></script>
<style lang=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">scss</span><span style="color: rgba(128, 0, 0, 1)">"</span>><span style="color: rgba(0, 0, 0, 1)">
.newsbox{
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 显示一行</span>
<span style="color: rgba(0, 0, 0, 1)"> display: flex;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 图片样式</span>
<span style="color: rgba(0, 0, 0, 1)"> .pic{
width: 230rpx;
height: 160rpx;
image{
width:</span><span style="color: rgba(128, 0, 128, 1)">100</span>%<span style="color: rgba(0, 0, 0, 1)">;
height: </span><span style="color: rgba(128, 0, 128, 1)">100</span>%<span style="color: rgba(0, 0, 0, 1)">;
}
}
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 文字样式 有上下结构</span>
<span style="color: rgba(0, 0, 0, 1)"> .text{
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> border: 1rpx solid red;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 自动把剩下的填满</span>
flex:<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">;
padding</span>-<span style="color: rgba(0, 0, 0, 1)">left: 20rpx;
display: flex;
flex</span>-<span style="color: rgba(0, 0, 0, 1)">direction: column;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 弹性项目以均匀的间距放置在项目被推到开始和最后一个项目被推到结束的地方</span>
justify-content: space-<span style="color: rgba(0, 0, 0, 1)">between;
.title{
font</span>-<span style="color: rgba(0, 0, 0, 1)">size: 36rpx;
color: #</span><span style="color: rgba(128, 0, 128, 1)">333</span><span style="color: rgba(0, 0, 0, 1)">;
.t{
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 这边给标题文字两行显示省略号处理</span>
text-overflow: -o-ellipsis-<span style="color: rgba(0, 0, 0, 1)">lastine;
overflow: hidden; </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">溢出内容隐藏</span>
text-overflow: ellipsis; <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">文本溢出部分用省略号表示</span>
display: -webkit-box; <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">特别显示模式</span>
-webkit-line-clamp: <span style="color: rgba(128, 0, 128, 1)">2</span>; <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">行数</span>
line-clamp: <span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">;
</span>-webkit-box-orient:vertical; <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">盒子中内容竖屏排列</span>
<span style="color: rgba(0, 0, 0, 1)"> }
}
.info{
font</span>-<span style="color: rgba(0, 0, 0, 1)">size: 26rpx;
color: #</span><span style="color: rgba(128, 0, 128, 1)">999</span><span style="color: rgba(0, 0, 0, 1)">;
text{
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> jianju间距</span>
padding-<span style="color: rgba(0, 0, 0, 1)">right: 30rpx;
}
}
}
}
</span></style></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>个人中心页面user.vue</p>
<div class="cnblogs_code"><img id="code_img_closed_1449fb71-dca3-4517-94a9-05e49c58cb79" class="code_img_closed lazyload" data-src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif"><img id="code_img_opened_1449fb71-dca3-4517-94a9-05e49c58cb79" class="code_img_opened lazyload" style="display: none" data-src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif">
<div id="cnblogs_code_open_1449fb71-dca3-4517-94a9-05e49c58cb79" class="cnblogs_code_hide">
<pre><template>
<view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">user</span><span style="color: rgba(128, 0, 0, 1)">"</span>>
<div <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">top</span><span style="color: rgba(128, 0, 0, 1)">"</span>>
<image src=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">../../static/images/history.png</span><span style="color: rgba(128, 0, 0, 1)">"</span>></image>
<div <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">text</span><span style="color: rgba(128, 0, 0, 1)">"</span>>浏览记录</div>
</div>
<!-- 内容 -->
<view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">content</span><span style="color: rgba(128, 0, 0, 1)">"</span>>
<div <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">row</span><span style="color: rgba(128, 0, 0, 1)">"</span> v-<span style="color: rgba(0, 0, 255, 1)">for</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">item in 10</span><span style="color: rgba(128, 0, 0, 1)">"</span>>
<newsbox></newsbox>
</div>
</view>
</view>
</template>
<script><span style="color: rgba(0, 0, 0, 1)">
export </span><span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(0, 0, 0, 1)"> {
data() {
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> {
};
}
}
</span></script>
<style lang=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">scss</span><span style="color: rgba(128, 0, 0, 1)">"</span>><span style="color: rgba(0, 0, 0, 1)">
.user{
.top{
padding: 20px </span><span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">;
background: #F8F8F8;
color: #</span><span style="color: rgba(128, 0, 128, 1)">666</span><span style="color: rgba(0, 0, 0, 1)">;
display: flex;
flex</span>-<span style="color: rgba(0, 0, 0, 1)">direction: column;
justify</span>-<span style="color: rgba(0, 0, 0, 1)">content: center;
align</span>-<span style="color: rgba(0, 0, 0, 1)">items: center;
image{
width: 150rpx;
height: 150rpx;
}
.text{
font</span>-<span style="color: rgba(0, 0, 0, 1)">size: 38rpx;
padding: 20rpx;
}
}
}
.content{
padding: 30rpx;
.row{
border</span>-<span style="color: rgba(0, 0, 0, 1)">bottom: 1rpx solid #efefef;
padding: 20rpx </span><span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">;
}
}
</span></style></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p><img alt="" width="244" height="433" loading="lazy" src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406135536534-2084170282.png"></p>
<h3>5、根据不同条件渲染组件差异化</h3>
<p>5.1、首页在文字下方是<strong>浏览量</strong>,个人中心浏览历史文字下方是<strong>发布时间</strong></p>
<p><strong><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406141148311-1693130582.png"></strong></p>
<p><strong><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406151852743-1972970861.png"></strong></p>
<h3>6、点击导航显示高亮</h3>
<p>做判断,什么时候需要显示高亮</p>
<div class="cnblogs_code">
<pre><view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">item <strong>active</strong></span><span style="color: rgba(128, 0, 0, 1)">"</span> v-<span style="color: rgba(0, 0, 255, 1)">for</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">item in 8</span><span style="color: rgba(128, 0, 0, 1)">"</span>>国内</view> </pre>
</div>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406152538632-1286376039.png"></p>
<p>更改后:</p>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406153219378-828496163.png"></p>
<p> <img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406153250357-252534456.png"> </p>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406153319110-945513833.png"></p>
<h3>7、详情布局,将原生事件绑定到组件中</h3>
<h4>7.1、新建一个详情页detail.vue</h4>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">user.vue 和index.vue
</span><newsbox @click.native=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">goDetail</span><span style="color: rgba(128, 0, 0, 1)">"</span>></newsbox>
<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 跳转到详情页</span>
<span style="color: rgba(0, 0, 0, 1)"> goDetail(){
uni.navigateTo({
url:</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">../detail/detail</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
})
}</span></pre>
</div>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406154155596-1392308681.png"></p>
<h4> 7.2、接下来布局详情页</h4>
<p>首先一个框架</p>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406155550019-1279069721.png"></p>
<p>添加样式后:</p>
<div class="cnblogs_code"><img src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif"><img id="code_img_opened_b23642f6-7461-4c77-881d-592e86e52f25" class="code_img_opened lazyload" style="display: none" data-src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif">
<div id="cnblogs_code_open_b23642f6-7461-4c77-881d-592e86e52f25" class="cnblogs_code_hide">
<pre><template>
<view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">detail</span><span style="color: rgba(128, 0, 0, 1)">"</span>>
<view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">title</span><span style="color: rgba(128, 0, 0, 1)">"</span>>把实体经济做实做强做优把实体经济做实做强做优把实体经济做实做强做优</view>
<view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">info</span><span style="color: rgba(128, 0, 0, 1)">"</span>>
<view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">author</span><span style="color: rgba(128, 0, 0, 1)">"</span>>编辑:张胜男</view>
<view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">time</span><span style="color: rgba(128, 0, 0, 1)">"</span>><span style="color: rgba(128, 0, 128, 1)">2020</span>-<span style="color: rgba(128, 0, 128, 1)">12</span>-<span style="color: rgba(128, 0, 128, 1)">23</span> <span style="color: rgba(128, 0, 128, 1)">15</span>:<span style="color: rgba(128, 0, 128, 1)">20</span>:<span style="color: rgba(128, 0, 128, 1)">00</span></view>
</view>
<view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">content</span><span style="color: rgba(128, 0, 0, 1)">"</span>><span style="color: rgba(0, 0, 0, 1)">
实体经济是支撑经济增长、保障国家安全的重要基础,是一国经济的立身之本,是财富创造的根本源泉,是国家强盛的重要支柱。
</span></view>
<view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">desscription</span><span style="color: rgba(128, 0, 0, 1)">"</span>><span style="color: rgba(0, 0, 0, 1)">
声明:本站的内容均采集与腾讯新闻,如果侵权请联系管理(</span><span style="color: rgba(128, 0, 128, 1)">2199904544</span><span style="color: rgba(0, 0, 0, 1)">@qq.com)进行整改删除,若有侵犯请及时联系管理员,谢谢您的支持。
</span></view>
</view>
</template>
<script><span style="color: rgba(0, 0, 0, 1)">
export </span><span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(0, 0, 0, 1)"> {
data() {
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> {
};
}
}
</span></script>
<style lang=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">scss</span><span style="color: rgba(128, 0, 0, 1)">"</span>><span style="color: rgba(0, 0, 0, 1)">
.detail{
padding: 30rpx;
.title{
font</span>-<span style="color: rgba(0, 0, 0, 1)">size:46rpx;
color: #</span><span style="color: rgba(128, 0, 128, 1)">333</span><span style="color: rgba(0, 0, 0, 1)">;
}
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 编辑区域</span>
<span style="color: rgba(0, 0, 0, 1)"> .info{
background: #F6F6F6;
padding: 20rpx ;
display: flex;
justify</span>-content: space-<span style="color: rgba(0, 0, 0, 1)">between;
margin: 40rpx </span><span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">;
}
.content{
padding</span>-<span style="color: rgba(0, 0, 0, 1)">bottom: 50rpx;
}
.desscription{
background: #fef0f0;
font</span>-<span style="color: rgba(0, 0, 0, 1)">size: 26rpx;
padding: 20rpx;
color: #f89898;
line</span>-height: <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">.8em;
}
}
</span></style></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p><img alt="" width="164" height="185" loading="lazy" src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406160542360-1656861877.png"></p>
<h2>二、数据交互</h2>
<h3> 2.1、首页接口</h3>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406170223558-1916004424.png"></p>
<p> </p>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406170104558-756791160.png"></p>
<p> </p>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406170409365-1559161156.png"></p>
<p> </p>
<p> <img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406170435427-2022236405.png"></p>
<h3>2.2、导航内容切换</h3>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406172123328-1308217416.png"></p>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406172144854-893500240.png"></p>
<p> 根据cid可以切换</p>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406172054671-779097885.png"><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406172248266-1406216417.png"></p>
<h3> 2.3、做一个判断</h3>
<p>导航没有数据的时候就显示</p>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406173145300-1813577294.png"></p>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406173102692-1351379772.png"> </p>
<h3>2.4、添加一个底部触底加载更多</h3>
<p>onReachBottom页面滚动到底部的事件(不是scroll-view滚到底),常用于下拉下一页数据。</p>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406193131109-1136119663.png"></p>
<p> </p>
<p> <img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406193214224-1969926519.png"></p>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406193046281-467367644.png"></p>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406193013496-2110068669.png"></p>
<p> 但是写完之后会出现一个bug,就是导航切换都是在第一页,</p>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406193457435-1735588497.png"></p>
<p>页面跳转为1,回到第一页,给一个空数组,清空数据</p>
<p> <img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406193624697-904532923.png"></p>
<p> <img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406193714840-1642002021.png"></p>
<h3> 2.5、优化细节增加loading加载样式。</h3>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406195600184-670803721.png"> </p>
<p> <img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406195629565-1942476821.png"></p>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406195540022-876453933.png"></p>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406195129553-1733138312.png"></p>
<p> </p>
<h3> 2.6、自动判断是0,1,2</h3>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406200150388-431375293.png"></p>
<p> 这里给个判断,如果等于2,就返回,不会再更新加载了</p>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230406200115559-2022057685.png"></p>
<p> 首页代码</p>
<div class="cnblogs_code"><img src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif"><img id="code_img_opened_6d350cd8-552d-4654-94e7-9cf75cc9d34f" class="code_img_opened lazyload" style="display: none" data-src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif">
<div id="cnblogs_code_open_6d350cd8-552d-4654-94e7-9cf75cc9d34f" class="cnblogs_code_hide">
<pre><template>
<!-- 给一个大的盒子 -->
<view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">home</span><span style="color: rgba(128, 0, 0, 1)">"</span>>
<!--导航栏 可滚动视图区域 scroll-x允许横向-->
<scroll-view scroll-x <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">navscroll</span><span style="color: rgba(128, 0, 0, 1)">"</span>>
<view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">item</span><span style="color: rgba(128, 0, 0, 1)">"</span> :<span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">index==navIndex ? 'active' : ''</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
v</span>-<span style="color: rgba(0, 0, 255, 1)">for</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">(item,index) in navArr</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
@click</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">clickNav(index,item.id)</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
:key</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">item.id</span><span style="color: rgba(128, 0, 0, 1)">"</span>
>{{item.classname}}</view>
</scroll-view>
<!-- 内容 -->
<view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">content</span><span style="color: rgba(128, 0, 0, 1)">"</span>>
<view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">row</span><span style="color: rgba(128, 0, 0, 1)">"</span> v-<span style="color: rgba(0, 0, 255, 1)">for</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">item in newsArr</span><span style="color: rgba(128, 0, 0, 1)">"</span> :key=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">item.id</span><span style="color: rgba(128, 0, 0, 1)">"</span>>
<!-- <newsbox :item=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">{title:'首页标题',author:'张张',hits:'334'}</span><span style="color: rgba(128, 0, 0, 1)">"</span>></newsbox> -->
<newsbox :item=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">item</span><span style="color: rgba(128, 0, 0, 1)">"</span> @click.native=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">goDetail</span><span style="color: rgba(128, 0, 0, 1)">"</span>></newsbox>
</view>
</view>
<!-- 做一个判断,没有数据就显示图片 -->
<view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">nodata</span><span style="color: rgba(128, 0, 0, 1)">"</span> v-<span style="color: rgba(0, 0, 255, 1)">if</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">!newsArr.length</span><span style="color: rgba(128, 0, 0, 1)">"</span>>
<image src=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">../../static/images/nodata.png</span><span style="color: rgba(128, 0, 0, 1)">"</span> mode=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">widthFix</span><span style="color: rgba(128, 0, 0, 1)">"</span>></image>
</view>
<!-- 有数据的时候在进行判断 -->
<view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">loading</span><span style="color: rgba(128, 0, 0, 1)">"</span> v-<span style="color: rgba(0, 0, 255, 1)">if</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">newsArr.length</span><span style="color: rgba(128, 0, 0, 1)">"</span>>
<!-- 然后触底的时候就可以把状态修改一下 -->
<view v-<span style="color: rgba(0, 0, 255, 1)">if</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">loading==1</span><span style="color: rgba(128, 0, 0, 1)">"</span>>数据加载中...</view>
<view v-<span style="color: rgba(0, 0, 255, 1)">if</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">loading==2</span><span style="color: rgba(128, 0, 0, 1)">"</span>>没有更多了~~</view>
</view>
</view>
</template>
<script><span style="color: rgba(0, 0, 0, 1)">
export </span><span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(0, 0, 0, 1)"> {
data() {
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 定义一个变量,默认是一个0</span>
navIndex:<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">,
navArr:[],
newsArr:[],
currentPage:</span><span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 定义一个状态 0默认 1加载中 2没有更多了,然后去上面判断</span>
loading:<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">
}
},
onLoad() {
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 调用</span>
<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.getNavData();
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.getNewsData();
},
onReachBottom(){
console.log(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">到底部了</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 这里给个判断,如果等于2,就返回,不会在更新加载了</span>
<span style="color: rgba(0, 0, 255, 1)">if</span>(<span style="color: rgba(0, 0, 255, 1)">this</span>.loading==<span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">){
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">;
}
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.currentPage++<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.loading=<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 再次传新闻列表数据</span>
<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.getNewsData();
},
methods: {
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 点击导航切换 </span>
<span style="color: rgba(0, 0, 0, 1)"> clickNav(index,id){
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.navIndex=<span style="color: rgba(0, 0, 0, 1)">index;
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.currentPage=<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.newsArr=<span style="color: rgba(0, 0, 0, 1)">[];
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.loading=<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 重新做一个网络请求</span>
<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.getNewsData(id);
},
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 跳转到详情页</span>
<span style="color: rgba(0, 0, 0, 1)"> goDetail(){
uni.navigateTo({
url:</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">../detail/detail</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
})
},
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 获取导航列表数据</span>
<span style="color: rgba(0, 0, 0, 1)"> getNavData(){
uni.request({
url:</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">https://ku.qingnian8.com/dataApi/news/navlist.php</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
success:res</span>=><span style="color: rgba(0, 0, 0, 1)">{
console.log(res),
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.navArr=<span style="color: rgba(0, 0, 0, 1)">res.data
}
})
},
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 获取新闻列表数据</span>
getNewsData(id=<span style="color: rgba(128, 0, 128, 1)">50</span><span style="color: rgba(0, 0, 0, 1)">){
uni.request({
url:</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">https://ku.qingnian8.com/dataApi/news/newslist.php</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
data:{
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 数据数量。默认接口有8条
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> num:5,
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 接口数据的编号
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> cid:50</span>
<span style="color: rgba(0, 0, 0, 1)"> cid:id,
page:</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.currentPage
},
success:res</span>=><span style="color: rgba(0, 0, 0, 1)">{
console.log(res)
</span><span style="color: rgba(0, 0, 255, 1)">if</span>(res.data.length==<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">){
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.loading=<span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">
}
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 二维数组结构</span>
<span style="color: rgba(0, 0, 255, 1)">this</span>.newsArr=[...<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.newsArr,...res.data]
}
})
}
}
}
</span></script>
<style lang=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">scss</span><span style="color: rgba(128, 0, 0, 1)">"</span> scoped><span style="color: rgba(0, 0, 0, 1)">
.navscroll{
height: 100rpx;
background: #d7d7d7;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 显示这个导航不换行</span>
white-<span style="color: rgba(0, 0, 0, 1)">space: nowrap;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 固定</span>
position: <span style="color: rgba(0, 0, 255, 1)">fixed</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 解决h5的top uniapp提供内置Css变量</span>
top:<span style="color: rgba(0, 0, 255, 1)">var</span>(--windons--<span style="color: rgba(0, 0, 0, 1)">top);
left: </span><span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">;
z</span>-index: <span style="color: rgba(128, 0, 128, 1)">10</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> top: var(--window-top);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 这个是给导航滑块的给隐藏,虽然小程序没有显示,但是h5会出现,直接复制</span>
/deep/ ::-webkit-<span style="color: rgba(0, 0, 0, 1)">scrollbar {
width: 4px </span>!<span style="color: rgba(0, 0, 0, 1)">important;
height: 1px </span>!<span style="color: rgba(0, 0, 0, 1)">important;
overflow: auto </span>!<span style="color: rgba(0, 0, 0, 1)">important;
background: transparent </span>!<span style="color: rgba(0, 0, 0, 1)">important;
</span>-webkit-appearance: auto !<span style="color: rgba(0, 0, 0, 1)">important;
display: block;
}
.item{
font</span>-<span style="color: rgba(0, 0, 0, 1)">size:40rpx;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 显示一行</span>
display: inline-<span style="color: rgba(0, 0, 0, 1)">block;
line</span>-<span style="color: rgba(0, 0, 0, 1)">height: 100rpx;
padding: </span><span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 30rpx;
color: #</span><span style="color: rgba(128, 0, 128, 1)">333</span><span style="color: rgba(0, 0, 0, 1)">;
</span>&<span style="color: rgba(0, 0, 0, 1)">.active{
color: #31C27C;
}
}
}
.content{
padding: 30rpx;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 标题栏,导航栏的位置 </span>
padding-<span style="color: rgba(0, 0, 0, 1)">top: 130rpx;
.row{
border</span>-<span style="color: rgba(0, 0, 0, 1)">bottom: 1rpx solid #efefef;
padding: 20rpx </span><span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">;
}
}
.nodata{
display: flex;
justify</span>-<span style="color: rgba(0, 0, 0, 1)">content: center;
image{
width: 360rpx;
}
}
.loading{
text</span>-<span style="color: rgba(0, 0, 0, 1)">align: center;
color: #</span><span style="color: rgba(128, 0, 128, 1)">888</span><span style="color: rgba(0, 0, 0, 1)">;
font</span>-<span style="color: rgba(0, 0, 0, 1)">size: 26rpx;
line</span>-<span style="color: rgba(0, 0, 0, 1)">height: 2em;
}
</span></style></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<h3>2.7、详情跳转</h3>
<h4>1、将值带进去,一个classid跟一个id</h4>
<p><img alt="" width="395" height="247" loading="lazy" src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230409192644907-1150525420.png"></p>
<p> </p>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230409192733195-472053367.png"></p>
<p>变量</p>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230409192807780-792036757.png"></p>
<h4>2、在详情页接收值,接收两个参数</h4>
<h5>1、先打印,测试在上一个页面能接到值</h5>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230409193124697-1302912963.png"></p>
<p> </p>
<p> <img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230409193416777-413921511.png"></p>
<p> </p>
<p> <img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230409193521317-1951090338.png"></p>
<p> </p>
<h5> 2、使用接口拿到详情值</h5>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230409194403937-1994499797.png"></p>
<p> </p>
<p> <img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230409194556753-271053832.png"></p>
<h5>3、整个对象拿过来,先拿标题title</h5>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230409194836781-1077791085.png"></p>
<p>上图的data是整个对象,所以直接写入</p>
<p><strong><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230409194925021-1873207149.png"></strong></p>
<p> </p>
<p> <img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230409195016806-454512884.png"></p>
<p> </p>
<h5> 4、效果1文本问题</h5>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230409195639374-920049017.png"></p>
<p> </p>
<p> 日期时间戳需要转化,后面修改,然后就是文本,需要用到一个标签<rich-text></rich-text></p>
<h5>5、效果2,图片问题</h5>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230409195901264-275274986.png"></p>
<p> </p>
<p> 因为在content,所以可以直接使用css样式</p>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230409200222683-112922214.png"></p>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230409200200286-1352950402.png"></p>
<h5>6、使用正则修改小程序图片问题</h5>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230409201034915-1291052250.png"><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230409201116802-2104061450.png"></p>
<p> <img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230409201154839-482994710.png"></p>
<h5> 7、js 时间戳转日期格式的方法(可以百度搜),这里提供一个公共库</h5>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230409201449818-1674383676.png"></p>
<p> </p>
<p> <img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230409202455850-1269091033.png"></p>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230409202621676-1455559348.png"></p>
<p> <img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230409202552164-152918794.png"></p>
<h5> 8、设置导航条</h5>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230409203345712-533166701.png"></p>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230409203451704-338414154.png"></p>
<p> <img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230409203426291-571367770.png"></p>
<h3>2.8、历史浏览器记录</h3>
<p> 2.8.1、StorageSync读写缓存渲染记录页面</p>
<p> detail.vue</p>
<p> <img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230411115957138-95808710.png"></p>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230411120340648-1019573391.png"></p>
<p> </p>
<p> </p>
<p> <img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230411120433070-1358304035.png"></p>
<p>开始会一条信息替换,所以用数据堆加</p>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230411120549953-85951721.png"></p>
<p> </p>
<p>效果:</p>
<p> <img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230411140810442-844117812.png"><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230411120722501-932750766.png"></p>
<p> 这时从这里还没带值进去,还有没有去重</p>
<h3>2.9、处理findIndex索引数据去重优化细节</h3>
<p>根据缓存的id是否相等</p>
<p> <img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230411142125754-1633120497.png"></p>
<p> 去重成功</p>
<p>自动刷新</p>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230411142428721-95621066.png"></p>
<p> <img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230411142504433-921195705.png"></p>
<p> <img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230411142742501-178181424.png"></p>
<p> 做一个判断,没有历史记录就是显示一张图片</p>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230411192042245-923916041.png"></p>
<p> </p>
<p> </p>
<p> <img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230411192152452-1323015074.png"></p>
<p> <img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230411192252455-369914364.png"></p>
<h2>三、H5打包</h2>
<p>打开manifest.json文件 </p>
<p><img src="https://img2023.cnblogs.com/blog/2762799/202304/2762799-20230411193713324-2135850772.png"></p>
<h2>四、源码</h2>
<p>https://gitee.com/isbamboo--555/journalism</p>
<p> </p><br><br>
来源:https://www.cnblogs.com/ischengzi/p/17292997.html
頁:
[1]