整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

「前端骚操作」移动端H5页面上传图片或多张图片

传图片

传统PC网页上传文件,大家都已经熟悉,这里不做介绍。

本文简单介绍移动端常用上传图片功能。灵活使用轮询或长连接可实现PC与移动端数据同步,即PC端需要上传的图片是移动拍照下来或移动端硬盘储存的,不需要再传到PC上然后上传。比如拍照上传业务。。。

移动端H5上传图片的方式,要点如下:

要点解析input即input标签typeinput标签的type属性,需要为fileaccept说明接收文件类型,决定调用的资源种类capture指明调用的目标multiple是否支持多文件

实例

<div>纯input与type</div>
<input type="file">
<div>指明需要图片</div>
<input type="file" accept='image/*'>
<div>指明需要多张图片</div>
<input type="file" multiple accept='image/*'>
<div>指明调用摄像头获取图片</div>
<input type="file" capture='camera' accept='image/*'>
<div>指明调用摄像头并多张图片</div>
<!-- multiple 无效 -->
<input type="file" multiple capture='camera' accept='image/*'>

效果

Chrome 66.0.3358.158

页面效果

纯input与type

指明需要图片

指明需要多张图片

指明调用摄像头获取图片

指明调用摄像头并多张图片

微信 6.7.0

页面效果

微信除了调用摄像头之外,点击都显示下面这个,只有点击相册或其他方式后才有区别,下面图片展示都是其他方式的区别。

注意点击相册在微信与系统上有区别,微信直接打开相册列表,而MIUI系统会默认打开照片列表,或者你手动选择前往相册列表。

纯input与type

指明需要图片

选择效果

指明需要多张图片

注意这里直接把摄像头过滤了

选择效果

指明调用摄像头获取图片

同Chrome

指明调用摄像头并多张图片

同Chrome

iOS 11.4.1

微信端与Safari一致,效果与上述微信差不多,功能上没测试出有什么不同,这里不再贴图

完整源码如下

HTML的世界里,一切都是由容器和内容构成的。容器,就如同一个个盒子,用来装载各种元素;而内容,则是这些盒子里的珍宝。理解了这一点,我们就迈出了探索HTML布局的第一步。

在HTML中,布局标签主要用于控制页面的结构和样式。本文将介绍一些常用的布局标签及其使用方法,并通过代码示例进行演示。

一、理解布局的重要性

布局在我们前端开发中担任什么样的角色呢?想象一下,你面前有一堆散乱的积木,无序地堆放在那里。

而你的任务,就是将这些积木按照图纸拼装成一个精美的模型。HTML布局标签的作用就像那张图纸,它指导浏览器如何正确、有序地显示内容和元素,确保网页的结构和外观既美观又实用。

下面我们就来看看在HTML中常用的基础布局标签有哪些,如何使用这些布局标签完成我们的开发目标。

二、常用的布局标签

1、div标签

div标签是一个块级元素,它独占一行,用于对页面进行区域划分。它可以包含其他HTML元素,如文本、图片、链接等。通过CSS样式可以设置div的布局和样式。

示例代码:

<!DOCTYPE html>
<html>
<head>
<style>
  .box {
    width: 200px;
    height: 200px;
    background-color: red;
  }
</style>
</head>
<body>

<div>这是一个div元素

</div>

</body>
</html>

运行结果:

2、span标签

span标签是一个内联元素,它不独占一行,用于对文本进行区域划分。它主要用于对文本进行样式设置,如字体、颜色等。与div类似,span也可以包含其他HTML元素。
示例代码:

<!DOCTYPE html>
<html>
<head>
<style>
  .text {
    color: blue;
    font-size: 20px;
  }
</style>
</head>
<body>

<p>这是一个<span>span元素</span>。</p>

</body>
</html>

运行结果:

3、table标签

table标签用于创建表格,它包含多个tr(行)元素,每个tr元素包含多个td(单元格)或th(表头单元格)元素。

<table> 定义一个表格,<tr> 定义表格中的行,而 <td> 则定义单元格。通过这三个标签,我们可以创建出整齐划一的数据表,让信息的展示更加直观明了。

需要注意的是:

  • <table>和</table>标记着表格的开始和结束。
  • <tr>和</tr>标记着行的开始和结束,几组表示该表格有几行。
  • <td>和</td>标记着单元格的开始和结束,表示这一行中有几列。

示例代码:

<!DOCTYPE html>
<html>
<head>
<style>
  table, th, td {
    border: 1px solid black;
  }
</style>
</head>
<body>
<table>
  <tr>
    <th>姓名</th>
    <th>年龄</th>
  </tr>
  <tr>
    <td>张三</td>
    <td>25</td>
  </tr>
  <tr>
    <td>李四</td>
    <td>30</td>
  </tr>
</table>
</body>
</html>

运行结果:

4、form标签

<form>标签的主要作用是定义一个用于用户输入的HTML表单。这个表单可以包含各种输入元素,如文本字段、复选框、单选按钮、提交按钮等。

<form>元素可以包含以下一个或多个表单元素:<input>、<textarea>、<button>、<select>、<option>、<optgroup>、<fieldset>、<label>和<output>等。

示例代码:

<!DOCTYPE html>
<html>
<head>
<style>
  form {
    display: flex;
    flex-direction: column;
  }
</style>
</head>
<body>

<form>
  <label for="username">用户名:</label>
  <input type="text" id="username" name="username">
  <br>
  <label for="password">密码:</label>
  <input type="password" id="password" name="password">
  <br>
  <input type="submit" value="提交">
</form>

</body>
</html>

运行结果:

5、列表标签

1)无序列表

  • 指没有顺序的列表项目
  • 始于<ul>标签,每个列表项始于<li>
  • type属性有三个选项:disc实心圆、circle空心圆、square小方块。 默认属性是disc实心圆。

示例代码:

<!DOCTYPE html>
<htmml>
<head>
<meta charst = "UTF-8">
<title>html--无序列表</title>
</head>
<body>
<ul>
<li>默认的无序列表</li>
<li>默认的无序列表</li>
<li>默认的无序列表</li>
</ul>
<ul>
<li type = "circle">添加circle属性</li>
<li type = "circle">添加circle属性</li>
<li type = "circle">添加circle属性</li>
</ul>
<ul>
<li type = "square">添加square属性</li>
<li type = "square">添加square属性</li>
<li type = "squaare">添加square属性</li>
</ul>
</body>
</html>

运行结果:


也可以使用CSS list-style-type属性定义html无序列表样式。

想要快速入门前端开发吗?推荐一个前端开发基础课程,这个老师讲的特别好,零基础学习无压力,知识点结合代码,边学边练,可以免费试看试学,还有各种辅助工具和资料,非常适合新手!点这里前往学习哦!「链接」

2)有序列表

  • 指按照字母或数字等顺序排列的列表项目。
  • 其结果是带有前后顺序之分的编号,如果插入和删除一个列表项,编号会自动调整。
  • 始于<ol>标签,每个列表项始于<li>。

示例代码:

<ol>
<li>默认的有序列表</li>
<li>默认的有序列表</li>
<li>默认的有序列表</li>
</ol>
<ol type = "a" start = "2">
<li>第1项</li>
<li>第2项</li>
<li>第3项</li>
<li value ="20">第四项</li>
</ol>
<ol type = "Ⅰ" start = "2">
<li>第1项</li>
<li>第2项</li>
<li>第3项</li>
</ol>

运行结果:


同样也可以使用CSS list-style-type属性定义html有序列表样式。

3)自定义列表

  • 自定义列表不仅仅是一列项目,而是项目及其注释的组合。
  • 以<dl>标签开始。每个自定义列表项以<dt>开始。每个自定义列表项的定义以<dd>开始。
  • 用于对术语或名词进行解释和描述,自定义列表的列表项前没有任何项目符号。
    基本语法:
<dl>
<dt>名词1</dt>
<dd>名词1解释1</dd>
<dd>名词1解释2</dd>

<dt>名词2</dt>
<dd>名词2解释1</dd>
<dd>名词2解释2</dd>
</dl>

<dl>即“definition list(定义列表)”,
<dt>即“definition term(定义名词)”,
而<dd>即“definition description(定义描述)”。

示例代码:

<dl>
<dt>计算机</dt>
<dd>用来计算的仪器</dd>

<dt>显示器</dt>
<dd>以视觉方式显示信息的装置</dd>
</dl>

运行结果:


以上就是HTML中常用的布局标签及其使用方法。在实际开发中,还可以结合CSS和JavaScript来实现更复杂的布局和交互效果。

掌握了这些HTML常用布局标签,你已经拥有了构建网页的基础工具。记住,好的布局不仅需要技术,更需要创意和对细节的关注。现在,打开你的代码编辑器,开始你的布局设计之旅吧!

例1: 自动播放功能

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<title>网页标题</title>
<meta name="keywords" content="关键字列表" />
<meta name="description" content="网页描述" />
<link rel="stylesheet" type="text/css" href="" />
<style type="text/css">
*{margin:0;padding:0;}
body{color:#333;font-size:12px;line-height:20px;}
ul,li{list-style:none;}
#content{margin:0 auto;width:540px;}
#content .scroll_top{width:540px;height:51px;background:url(images/dd_scroll_top.gif) no-repeat;}
#content .scroll_mid{
width:533px;
padding:5px 0 5px 5px;
border-left:1px solid #d6d5d6;
border-right:1px solid #d6d5d6;
background:#f2f2f3;
}
#scroll_number{
float:right;
padding-right:10px;
}
#scroll_number li{
margin-top:5px;
width:13px;
height:13px;
line-height:16px;
border:1px solid #999;
cursor:pointer;
text-align:center;
}
#content .scroll_end{
width:540px;
height:8px;
background:url(images/dd_scroll_end.gif) no-repeat;
margin-bottom:10px;
}
.scroll_number_out{
}
.scroll_number_over{
background-color:#F96;
color:#FFF;
}
</style>
<script type="text/javascript">
//分析思路
//1.当页面加载完成后 使用定时器
//2.需要有一个定时器功能函数 这个函数的主要功能是实现图片轮播
//3.当鼠标经过图片上时 清除定时器
//4.当鼠标离开图片上时 重新调用定时器
//5.把鼠标放在li标签上面 要显示li标签上数字对应的图片 清除定时器
//6.当鼠标离开li标签时 图片继续滚动 重新调用定时器
//7.li标签要随着图片滚动而滚动 并且对应的li标签要高亮
//1.当页面加载完成时
var img_obj = null;
var timer;
var lis_obj = null; //用来保存li
window.onload = function(){
//先将所有的li上面的class清空
//需要获取到id="dd_scroll"对象
img_obj = document.getElementById("dd_scroll");
//实现定时器
timer = setInterval("scroll_img()",1000);
//通过id="scroll_number"来获取对象
lis_obj = document.getElementById("scroll_number").getElementsByTagName("li");
}

//主要是用于实现图片轮播
var i = 2;
function scroll_img(){
//先将所有的li标签的class都清空
for(var j=0;j<lis_obj.length;j++){
lis_obj[j].className = "";
}
lis_obj[i-1].className = "scroll_number_over";
//需要改变img标签的src属性
img_obj.src = "images/dd_scroll_"+i+".jpg";
i++;
//判断i的值
if(i>6){
i = 1;
}
}
//鼠标经过 清除定时器
function stopScroll(ind){
if(ind){
i = ind; //把值赋值给i
scroll_img(); //重新调用图片轮播函数
}
clearInterval(timer);
}
//鼠标离开时 重新调用定时器
function goon(){
timer = setInterval("scroll_img()",1000);
}
</script>
</head>
<body>
<div id="content">
<!--轮换显示的横幅广告图片-->
<div class="scroll_top"></div>
<div class="scroll_mid"> <img src="images/dd_scroll_1.jpg" alt="轮换显示的图片广告" id="dd_scroll" onmouseover="stopScroll()" onmouseout="goon()"/>
<div id="scroll_number">
<ul>
<li id="scroll_number_1" onmouseover="stopScroll(1)" class="scroll_number_over" onmouseout="goon()">1</li>
<li id="scroll_number_2" onmouseover="stopScroll(2)" onmouseout="goon()">2</li>
<li id="scroll_number_3" onmouseover="stopScroll(3)" onmouseout="goon()">3</li>
<li id="scroll_number_4" onmouseover="stopScroll(4)" onmouseout="goon()">4</li>
<li id="scroll_number_5" onmouseover="stopScroll(5)" onmouseout="goon()">5</li>
<li id="scroll_number_6" onmouseover="stopScroll(6)" onmouseout="goon()">6</li>
</ul>
</div>
</div>
<div class="scroll_end"></div>
</div>
</body>
</html>

图片规格:500px 180px 共六张图片


实例2: 鼠标点击功能

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
*{
margin: 0;
padding: 0;
list-style: none;
}
div{
width: 665px;
height: 442px;
margin: 0 auto;
border: 5px solid gray;
position: relative;
}
/*5张图片的样式*/
ul,ul>li{
width: 665px;
height: 442px;
position: absolute;
}
ul>li{
display: none;
}
ul>li.active{
display: block;
}
/*5个点点点的样式*/
ol{
width: 150px;
height: 30px;
position: absolute;
left: 50%;
margin-left: -75px;
bottom: 20px;
}
ol>li{
width: 16px;
height: 16px;
margin: 7px;
float: left;
cursor: pointer;
border-radius: 50%;
background-color: rgba(255,255,255,0.5);
}
ol>li.active{
background-color: rgba(255,255,255,1);
}
div>a{
color: #999;
width: 30px;
height: 62px;
font-size: 24px;
text-align: center;
line-height: 62px;
text-decoration: none;
background-color: rgba(255,255,255,0.5);
position: absolute;
top: 190px;
}
div>a.prev{
left: 0;
}
div>a.next{
right: 0;
}
</style>
</head>
<body>
<div>
<!--5张图-->
<ul>
<li class="active"><a href=""><img src="img/1.jpeg"/></a></li>
<li><a href=""><img src="img/2.jpeg"/></a></li>
<li><a href=""><img src="img/3.jpeg"/></a></li>
<li><a href=""><img src="img/4.jpeg"/></a></li>
<li><a href=""><img src="img/5.jpeg"/></a></li>
</ul>
<!--5个点点点-->
<ol>
<li class="active"></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ol>
<!--左右箭头-->
<a class="prev" href="javascript:;"><</a>
<a class="next" href="javascript:;">></a>
</div>
<script type="text/javascript">
//获取左右箭头
var prev = document.getElementsByClassName("prev")[0];
var next = document.getElementsByClassName("next")[0];
//获取5个点点点
var ol_lis = document.getElementsByTagName("ol")[0].getElementsByTagName("li");
//获取5张图
var ul_lis = document.getElementsByTagName("ul")[0].getElementsByTagName("li");


var num = 0;
//下一张
next.onclick = function(){
num++;
if(num===ul_lis.length){
num = 0;
}
for(var i=0;i<ul_lis.length;i++){
ul_lis[i].className = "";//当我点击下一张是先把所有的图片隐藏
ol_lis[i].className = "";//当我点击下一张是先把所有的图片隐藏
}

ul_lis[num].className = "active";
ol_lis[num].className = "active";
}

//上一张
prev.onclick = function(){
num--;
if(num===-1){
num = ul_lis.length-1;
}
for(var j=0;j<ul_lis.length;j++){
ul_lis[j].className = "";//当我点击下一张是先把所有的图片隐藏
ol_lis[j].className = "";//当我点击下一张是先把所有的图片隐藏
}

ul_lis[num].className = "active";
ol_lis[num].className = "active";
}


//点点点
for(var k=0;k<ol_lis.length;k++){
//什么时候需要用索引 2个及其以上事物相关联的
ol_lis[k].index = k;//我给每一个点点点加一个自定义属性

ol_lis[k].onclick = function(){
for(var q=0;q<ol_lis.length;q++){
ol_lis[q].className = "";
ul_lis[q].className = "";
}

this.className = "active";
ul_lis[this.index].className = "active";

//此时左右按钮和点点点是两条路 我们需要让他们执行同样的规则
//所以num = 当前被点击的li的自定义属性
num = this.index;
}
}
</script>
</body>
</html>

图片规格:665px 442px 共六张图片