移动端H5页面,上下滑动翻页

2023-11-18

 升级版本:
https://blog.csdn.net/qq_16494241/article/details/122239278
改用原生JS编写,此版本基于JQ
可设置页面内容元素内部滚动及滚动至顶部或最底部触发翻页效果
PC端模式也可鼠标滑动翻页(元素内部滚动需使用滚轮)

移动端H5页面,上下滑动翻页
向上滑动进入下一页 , 当前页(加CSS样式outTop)向上移动移出窗口 ,下一页(加CSS样式inTop)向上移动进入窗口
向下滑动进入前一页 , 当前页(加CSS样式outDown)向下移动移出窗口 ,下一页(加CSS样式inDown)向下移动进入窗口
同时设置0.5秒以后(setTimeout(function(){......},500);)才可(根据canTouch变量设置)切换页面

以下是demo的HTML代码部分

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<meta name="viewport" content="width=640, user-scalable=no">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Expires" content="0">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="format-detection" content="telephone=no">
<meta name="apple-mobile-web-app-title" content="">
<title>H5-test</title>
<link href="public/css/css.css" rel="stylesheet" />
</head>
 
<body>
 
<div class="page_box">
    <div class="page page1">
        <div>
            <div>11111111111</div>
            <div>11111111111</div>
            <div>11111111111</div>
            <div>11111111111</div>
            <div>11111111111</div>
            <div>11111111111</div>
            <div>11111111111</div>
            <div>11111111111</div>
            <div>11111111111</div>
            <div>11111111111</div>
        </div>
    </div>
    
    <div class="page page2 hide">
        <div>
            <div>22222222222</div>
            <div>22222222222</div>
            <div>22222222222</div>
            <div>22222222222</div>
            <div>22222222222</div>
            <div>22222222222</div>
            <div>22222222222</div>
            <div>22222222222</div>
            <div>22222222222</div>
            <div>22222222222</div>
        </div>
    </div>
    
    <div class="page page3 hide">
        <div>
            <div>33333333333</div>
            <div>33333333333</div>
            <div>33333333333</div>
            <div>33333333333</div>
            <div>33333333333</div>
            <div>33333333333</div>
            <div>33333333333</div>
            <div>33333333333</div>
            <div>33333333333</div>
            <div>33333333333</div>
        </div>
    </div>
    
    <div class="page page4 hide">
        <div>
            <div>44444444444</div>
            <div>44444444444</div>
            <div>44444444444</div>
            <div>44444444444</div>
            <div>44444444444</div>
            <div>44444444444</div>
            <div>44444444444</div>
            <div>44444444444</div>
            <div>44444444444</div>
            <div>44444444444</div>
        </div>
    </div>
    
    <div class="page page5 hide">
        <div>
            <div>55555555555</div>
            <div>55555555555</div>
            <div>55555555555</div>
            <div>55555555555</div>
            <div>55555555555</div>
            <div>55555555555</div>
            <div>55555555555</div>
            <div>55555555555</div>
            <div>55555555555</div>
            <div>55555555555</div>
        </div>
    </div>
    
    <div class="page page6 hide">
        <div>
            <div>66666666666</div>
            <div>66666666666</div>
            <div>66666666666</div>
            <div>66666666666</div>
            <div>66666666666</div>
            <div>66666666666</div>
            <div>66666666666</div>
            <div>66666666666</div>
            <div>66666666666</div>
            <div>66666666666</div>
        </div>
    </div>
	
	<div class="arrow">
		<div>
			<svg class="icon" style="width: 1em;height: 1em;vertical-align: middle;fill: currentColor;overflow: hidden;" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2859"><path d="M491.42 412.298c7.887 12.378 6.427 28.995-4.381 39.803L204.196 734.944l-90.51-90.51c-12.496-12.497-12.496-32.758 0-45.255L396.53 316.337l0.265 0.265 89.974-89.975c12.497-12.496 32.758-12.496 45.255 0l395.98 395.98-90.51 90.51c-12.497 12.497-32.758 12.497-45.255 0L491.42 412.297z" p-id="2860"></path></svg>
		</div>
		<div>
			<svg class="icon" style="width: 1em;height: 1em;vertical-align: middle;fill: currentColor;overflow: hidden;" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2859"><path d="M491.42 412.298c7.887 12.378 6.427 28.995-4.381 39.803L204.196 734.944l-90.51-90.51c-12.496-12.497-12.496-32.758 0-45.255L396.53 316.337l0.265 0.265 89.974-89.975c12.497-12.496 32.758-12.496 45.255 0l395.98 395.98-90.51 90.51c-12.497 12.497-32.758 12.497-45.255 0L491.42 412.297z" p-id="2860"></path></svg>
		</div>
	</div>
</div>
 
<script type="text/javascript" src="https://cdn.bootcss.com/jquery/1.11.2/jquery.min.js"></script>
<script type="text/javascript">
 
var curPage = 1;
var PageL = $('.page_box .page').length;
var canTouch = false;
canTouch = true;
 
var startY , endY , diff;
//document.body.addEventListener("touchstart", touchStart, false);
//document.body.addEventListener("touchmove", touchMove, false);
//document.body.addEventListener("touchend", touchEnd, false);
$('.page_box').on('touchstart',touchStart);
$('.page_box').on('touchmove',touchMove);
$('.page_box').on('touchend',touchEnd);
function touchStart(e){
//	var touch = e.touches[0];
	var touch = e.originalEvent.targetTouches[0];
	startY = touch.pageY;
}  
function touchMove(e){
	e.preventDefault();
//	var touch = e.touches[0];
	var touch = e.originalEvent.targetTouches[0];
	endY = touch.pageY;
	diff = endY - startY;
}
function touchEnd(e){
	if(Math.abs(diff) > 150 && canTouch){
		if(diff > 0){
			if(curPage <= 1){
				return;
			}
			
			$('.page' + curPage).removeClass('inTop outTop inDown outDown hide').addClass('outDown');
			curPage--;
			$('.page' + curPage).removeClass('inTop outTop inDown outDown hide').addClass('inDown');
			
		}else{
			if(curPage >= PageL){
				return;
			}
			
			$('.page' + curPage).removeClass('inTop outTop inDown outDown hide').addClass('outTop');
			curPage++;
			$('.page' + curPage).removeClass('inTop outTop inDown outDown hide').addClass('inTop');
			
		}
		if(curPage >= PageL){
			$('.arrow').hide();
		}else{
			$('.arrow').show();
		}
		
		canTouch = false;
		setTimeout(function(){
			canTouch = true;
			diff = 0;
			$('.page' + (curPage - 1) + ', .page' + (curPage + 1)).addClass('hide');
		},500);
	}
}
</script>
</body>
</html>


以下是demo的CSS样式部分

@charset "utf-8";
*{ margin:0px; padding:0px; box-sizing:border-box; -webkit-tap-highlight-color:rgba(0,0,0,0);}
html{ max-width:640px; margin:0 auto;}
body{ font-family:"PingFangSC-Regular","sans-serif","STHeitiSC-Light","微软雅黑","Microsoft YaHei"; font-size:50px; line-height:1.5em; color:#212121;
    -webkit-user-select:none; user-select:none;
    -webkit-touch-callout:none; touch-callout:none;
}
html , body , .page_box{ width:100%; height:100%; position:relative; overflow:hidden;}
.page{ background:url(data:image/jpg;base64,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) repeat-y; background-size:100%;}
.page{ display:flex; justify-content:center; align-items:center; width:100%; height:100%; position:absolute; left:0; top:0; overflow:hidden;}
.page.hide{ display:none;}
 
/*==================================*/
 
.page.inTop{
            -webkit-animation:ShowTop .5s ease-out both;
					animation:ShowTop .5s ease-out both;
}
.page.outTop{
            -webkit-animation:HideTop .5s ease-out both;
					animation:HideTop .5s ease-out both;
}
.page.inDown{
            -webkit-animation:ShowDown .5s ease-out both;
					animation:ShowDown .5s ease-out both;
}
.page.outDown{
            -webkit-animation:HideDown .5s ease-out both;
					animation:HideDown .5s ease-out both;
}
@-webkit-keyframes ShowTop{
	0%{ -webkit-transform:translateY(100%);}
	100%{ -webkit-transform:translateY(0);}
}
@keyframes ShowTop{
	0%{ transform:translateY(100%);}
	100%{ transform:translateY(0);}
}
@-webkit-keyframes HideTop{
	0%{ -webkit-transform:translateY(0);}
	100%{ -webkit-transform:translateY(-100%);}
}
@keyframes HideTop{
	0%{ transform:translateY(0);}
	100%{ transform:translateY(-100%);}
}
@-webkit-keyframes ShowDown{
	0%{ -webkit-transform:translateY(-100%);}
	100%{ -webkit-transform:translateY(0);}
}
@keyframes ShowDown{
	0%{ transform:translateY(-100%);}
	100%{ transform:translateY(0);}
}
@-webkit-keyframes HideDown{
	0%{ -webkit-transform:translateY(0);}
	100%{ -webkit-transform:translateY(100%);}
}
@keyframes HideDown{
	0%{ transform:translateY(0);}
	100%{ transform:translateY(100%);}
}
 
/*==================================*/
 
.arrow{ width:60px; height:52px; color: #fff; font-size: 40px; position:absolute; left:50%; margin-left: -30px; bottom:0;
	-webkit-animation:fadeIn .5s 1s both ease-in-out;
			animation:fadeIn .5s 1s both ease-in-out;
}
.arrow div:first-child , .arrow div:last-child{ display: flex; justify-content: center; align-items: center; width:60px; height: 40px; position:absolute; left:0;
	-webkit-transform-origin:center top;
			transform-origin:center top;
}
.arrow div:first-child{ top:0;
	-webkit-animation:arrow .8s .5s ease-in-out both infinite alternate;
			animation:arrow .8s .5s ease-in-out both infinite alternate;
}
.arrow div:last-child{ top:12px;
	-webkit-animation:arrow .8s .8s ease-in-out both infinite alternate;
			animation:arrow .8s .8s ease-in-out both infinite alternate;
}
@-webkit-keyframes arrow{
	100%{ -webkit-transform:translateY(-50%); opacity:1;}
	0%{ -webkit-transform:translateY(0); opacity:0;}
}
@keyframes arrow{
	100%{ transform:translateY(-50%); opacity:1;}
	0%{ transform:translateY(0); opacity:0;}
}
 
 
/*==================================*/
 
.page > div > div:nth-child(1){
	-webkit-animation:fadeRightTan .8s .2s ease-in-out both;
			animation:fadeRightTan .8s .2s ease-in-out both;
}
.page > div > div:nth-child(2){
	-webkit-animation:fadeRightTan .8s .7s ease-in-out both;
			animation:fadeRightTan .8s .7s ease-in-out both;
}
.page > div > div:nth-child(3){
	-webkit-animation:fadeRightTan .8s 1.2s ease-in-out both;
			animation:fadeRightTan .8s 1.2s ease-in-out both;
}
.page > div > div:nth-child(4){
	-webkit-animation:fadeRightTan .8s 1.7s ease-in-out both;
			animation:fadeRightTan .8s 1.7s ease-in-out both;
}
.page > div > div:nth-child(5){
	-webkit-animation:fadeRightTan .8s 2.2s ease-in-out both;
			animation:fadeRightTan .8s 2.2s ease-in-out both;
}
.page > div > div:nth-child(6){
	-webkit-animation:fadeRightTan .8s 2.7s ease-in-out both;
			animation:fadeRightTan .8s 2.7s ease-in-out both;
}
.page > div > div:nth-child(7){
	-webkit-animation:fadeRightTan .8s 3.2s ease-in-out both;
			animation:fadeRightTan .8s 3.2s ease-in-out both;
}
.page > div > div:nth-child(8){
	-webkit-animation:fadeRightTan .8s 4.7s ease-in-out both;
			animation:fadeRightTan .8s 4.7s ease-in-out both;
}
.page > div > div:nth-child(9){
	-webkit-animation:fadeRightTan .8s 5.2s ease-in-out both;
			animation:fadeRightTan .8s 5.2s ease-in-out both;
}
.page > div > div:nth-child(10){
	-webkit-animation:fadeRightTan .8s 5.7s ease-in-out both;
			animation:fadeRightTan .8s 5.7s ease-in-out both;
}
@-webkit-keyframes fadeRightTan{
	0%{ -webkit-transform:translateX(100%); opacity:0;}
	70%{ -webkit-transform:translateX(-5%); opacity:1;}
	80%{ -webkit-transform:translateX(2%); opacity:1;}
	90%{ -webkit-transform:translateX(-2%); opacity:1;}
	100%{ -webkit-transform:translateX(0); opacity:1;}
}
@keyframes fadeRightTan{
	0%{ transform:translateX(100%); opacity:0;}
	70%{ transform:translateX(-5%); opacity:1;}
	80%{ transform:translateX(2%); opacity:1;}
	90%{ transform:translateX(-2%); opacity:1;}
	100%{ transform:translateX(0); opacity:1;}
}

eg : 切换作用域改在 page_box 盒子上,那么不需要放在翻页的内容可以入在 page_box 外面
另外 : 当翻页中单页面内有行内滚动可以如下设置
demo如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<meta name="viewport" content="width=640, user-scalable=no">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Expires" content="0">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="format-detection" content="telephone=no">
<meta name="apple-mobile-web-app-title" content="">
<title>H5-test</title>
<style>
*{ margin:0px; padding:0px; box-sizing:border-box; -webkit-tap-highlight-color:rgba(0,0,0,0);}
html{ max-width:640px; margin:0 auto;}
body{ font-family:"PingFangSC-Regular","sans-serif","STHeitiSC-Light","微软雅黑","Microsoft YaHei"; font-size:50px; line-height:1.5em; color:#212121;
    -webkit-user-select:none; user-select:none;
    -webkit-touch-callout:none; touch-callout:none;
}
html , body , .page_box{ width:100%; height:100%; position:relative; overflow:hidden;}
.page{ background-color:#eee;}
.page{ display:flex; justify-content:center; align-items:center; flex-wrap:wrap; width:100%; height:100%; position:absolute; left:0; top:0; overflow:hidden;}
.page.hide{ display:none;}
 
/*==================================*/
 
.page.inTop{
            -webkit-animation:ShowTop .5s ease-out both;
					animation:ShowTop .5s ease-out both;
}
.page.outTop{
            -webkit-animation:HideTop .5s ease-out both;
					animation:HideTop .5s ease-out both;
}
.page.inDown{
            -webkit-animation:ShowDown .5s ease-out both;
					animation:ShowDown .5s ease-out both;
}
.page.outDown{
            -webkit-animation:HideDown .5s ease-out both;
					animation:HideDown .5s ease-out both;
}
@-webkit-keyframes ShowTop{
	0%{ -webkit-transform:translateY(100%);}
	100%{ -webkit-transform:translateY(0);}
}
@keyframes ShowTop{
	0%{ transform:translateY(100%);}
	100%{ transform:translateY(0);}
}
@-webkit-keyframes HideTop{
	0%{ -webkit-transform:translateY(0);}
	100%{ -webkit-transform:translateY(-100%);}
}
@keyframes HideTop{
	0%{ transform:translateY(0);}
	100%{ transform:translateY(-100%);}
}
@-webkit-keyframes ShowDown{
	0%{ -webkit-transform:translateY(-100%);}
	100%{ -webkit-transform:translateY(0);}
}
@keyframes ShowDown{
	0%{ transform:translateY(-100%);}
	100%{ transform:translateY(0);}
}
@-webkit-keyframes HideDown{
	0%{ -webkit-transform:translateY(0);}
	100%{ -webkit-transform:translateY(100%);}
}
@keyframes HideDown{
	0%{ transform:translateY(0);}
	100%{ transform:translateY(100%);}
}
 
/*==================================*/
 
.arrow{ width:60px; height:52px; color: #f00; font-size: 36px; position:absolute; left:50%; margin-left: -30px; bottom:0;
	-webkit-animation:fadeIn .5s 1s both ease-in-out;
			animation:fadeIn .5s 1s both ease-in-out;
}
.arrow div:first-child , .arrow div:last-child{ display: flex; justify-content: center; align-items: center; width:60px; height: 40px; position:absolute; left:0;
	-webkit-transform-origin:center top;
			transform-origin:center top;
}
.arrow div:first-child{ top:0;
	-webkit-animation:arrow .8s .5s ease-in-out infinite alternate;
			animation:arrow .8s .5s ease-in-out infinite alternate;
}
.arrow div:last-child{ top:12px;
	-webkit-animation:arrow .8s .8s ease-in-out infinite alternate;
			animation:arrow .8s .8s ease-in-out infinite alternate;
}
@-webkit-keyframes arrow{
	100%{ -webkit-transform:translateY(-50%); opacity:1;}
	0%{ -webkit-transform:translateY(0); opacity:0;}
}
@keyframes arrow{
	100%{ transform:translateY(-50%); opacity:1;}
	0%{ transform:translateY(0); opacity:0;}
}
</style>
</head>
 
<body>
 
<div class="page_box">
    <div class="page page1">
    	<div style="width:80%; height:100px; line-height:100px;">标题标题标题标题</div>
        <div id="inbox" style="width:80%; height:60%; overflow-y:auto; -webkit-overflow-scrolling:touch;">
            <p>行内滚动内容行内滚动内容行内滚动内容行内滚动内容行内滚动内容行内滚动内容行内滚动内容行内滚动内容行内滚动内容行内滚动内容行内滚动内容行内滚动内容行内滚动内容行内滚动内容行内滚动内容行内滚动内容行内滚动内容行内滚动内容行内滚动内容行内滚动内容行内滚动内容行内滚动内容行内滚动内容行内滚动内容行内滚动内容行内滚动内容行内滚动内容行内滚动内容行内滚动内容行内滚动内容行内滚动内容行内滚动内容行内滚动内容行内滚动内容行内滚动内容行内滚动内容行内滚动内容行内滚动内容行内滚动内容行内滚动内容行内滚动内容</p>
        </div>
    </div>
    
    <div class="page page2 hide">
        <div>
            <div>22222222222</div>
            <div>22222222222</div>
            <div>22222222222</div>
            <div>22222222222</div>
            <div>22222222222</div>
            <div>22222222222</div>
            <div>22222222222</div>
            <div>22222222222</div>
            <div>22222222222</div>
            <div>22222222222</div>
        </div>
    </div>
    
    <div class="page page3 hide">
        <div>
            <div>33333333333</div>
            <div>33333333333</div>
            <div>33333333333</div>
            <div>33333333333</div>
            <div>33333333333</div>
            <div>33333333333</div>
            <div>33333333333</div>
            <div>33333333333</div>
            <div>33333333333</div>
            <div>33333333333</div>
        </div>
    </div>
    
	<div class="arrow">
		<div>
			<svg class="icon" style="width: 1em;height: 1em;vertical-align: middle;fill: currentColor;overflow: hidden;" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2859"><path d="M491.42 412.298c7.887 12.378 6.427 28.995-4.381 39.803L204.196 734.944l-90.51-90.51c-12.496-12.497-12.496-32.758 0-45.255L396.53 316.337l0.265 0.265 89.974-89.975c12.497-12.496 32.758-12.496 45.255 0l395.98 395.98-90.51 90.51c-12.497 12.497-32.758 12.497-45.255 0L491.42 412.297z" p-id="2860"></path></svg>
		</div>
		<div>
			<svg class="icon" style="width: 1em;height: 1em;vertical-align: middle;fill: currentColor;overflow: hidden;" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2859"><path d="M491.42 412.298c7.887 12.378 6.427 28.995-4.381 39.803L204.196 734.944l-90.51-90.51c-12.496-12.497-12.496-32.758 0-45.255L396.53 316.337l0.265 0.265 89.974-89.975c12.497-12.496 32.758-12.496 45.255 0l395.98 395.98-90.51 90.51c-12.497 12.497-32.758 12.497-45.255 0L491.42 412.297z" p-id="2860"></path></svg>
		</div>
	</div>
</div>
 
<script type="text/javascript" src="https://cdn.bootcss.com/jquery/1.11.2/jquery.min.js"></script>
<script type="text/javascript">
var curPage = 1;
var PageL = $('.page_box .page').length;
var canTouch = false;
canTouch = true;
 
var startY , endY , diff;
//document.body.addEventListener("touchstart", touchStart, false);
//document.body.addEventListener("touchmove", touchMove, false);
//document.body.addEventListener("touchend", touchEnd, false);
$('.page_box').on('touchstart',touchStart);
$('.page_box').on('touchmove',touchMove);
$('.page_box').on('touchend',touchEnd);
function touchStart(e){
//	var touch = e.touches[0];
	var touch = e.originalEvent.targetTouches[0];
	startY = touch.pageY;
}  
function touchMove(e){
	e.preventDefault();
//	var touch = e.touches[0];
	var touch = e.originalEvent.targetTouches[0];
	endY = touch.pageY;
	diff = endY - startY;
}
function touchEnd(e){
	if(Math.abs(diff) > 150 && canTouch){
		if(diff > 0){
			if(curPage <= 1){
				return;
			}
			
			$('.page' + curPage).removeClass('inTop outTop inDown outDown hide').addClass('outDown');
			curPage--;
			$('.page' + curPage).removeClass('inTop outTop inDown outDown hide').addClass('inDown');
			
		}else{
			if(curPage >= PageL){
				return;
			}
			
			$('.page' + curPage).removeClass('inTop outTop inDown outDown hide').addClass('outTop');
			curPage++;
			$('.page' + curPage).removeClass('inTop outTop inDown outDown hide').addClass('inTop');
			
		}
		if(curPage >= PageL){
			$('.arrow').hide();
		}else{
			$('.arrow').show();
		}
		
		canTouch = false;
		setTimeout(function(){
			canTouch = true;
			diff = 0;
			$('.page' + (curPage - 1) + ', .page' + (curPage + 1)).addClass('hide');
		},500);
	}
}
 
/*******************/
 
//设置可行内滚动
$('#inbox').on('touchstart',function(e){
	e.stopPropagation();
	//document.body.removeEventListener("touchmove", touchMove, false);
	$('.page_box').unbind('touchmove');
});
$('#inbox').on('touchend',function(e){
	$('.page_box').on('touchmove',touchMove);
	//document.body.addEventListener("touchmove", touchMove, false);
});
</script>
</body>
</html>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

移动端H5页面,上下滑动翻页 的相关文章

随机推荐

  • java多线程使用教程

    文章目录 如何使用多线程 继承Thread类 实现Runnable接口 线程的生命周期 线程同步 线程间通信 shutdown 方法的重要性 如何使用多线程 在Java中 创建多线程的方式有两种 一种是继承Thread类 另一种是实现Run
  • docker中mysql初始化及启动失败解决办法

    在docker中有一个mysql服务 其数据文件是挂在在主机外面的文件 在docker中的root有访问该数据文件的权限 但是docker中mysql访问数据文件的时候提示权限不足 于是只有以root用户来启动mysql了 数据初始化 my
  • 从零开始Vue3+Element Plus后台管理系统(十)——自定义水印指令与全局注册

    在实际项目开发中 自定义指令用得还是比较多的 比如 复制粘贴 输入框防抖 输入框禁止特殊字符 权限校验 背景水印 拖拽等等 指令确实是个优雅的存在 Vue3中定义一个普通的自定义指令的详细说明参见官网 https cn vuejs org
  • Ubuntu 安装 anaconda

    文章目录 写在前面 一 官网下载安装包 二 安装 参考链接 写在前面 Ubuntu安装 anaconda 比较简单 去官网下载 anaconda 安装包 然后安装即可 自己的安装环境 Ubuntu18 04 anaconda3 博客撰写日期
  • MySQL-图形化界面工具 (下)

    作者 小刘在C站 个人主页 小刘主页 每天分享云计算网络运维课堂笔记 努力不一定有收获 但一定会有收获加油 一起努力 共赴美好人生 树高千尺 落叶归根人生不易 人间真情 目录 MySQL 修改数据 删除数据 DQL 基本语法 MySQL M
  • MySQL导出和导入SQL脚本

    首先 使用mysqldump命令的前提是 在Cmd中进入mysql安装目录下的bin目录下 才可以使用该命令 我的mysql安装在E 盘 所以 首先进入bin目录下 E Program Files MySQL MySQL Server 5
  • SLAM常用最小二乘最优化方法学习、分析和总结

    SLAM中二维视觉的定位问题被最终归为一个最小二乘问题 那么紧随其后的就是对最小二乘的最优化求解 对其求解析解显然是不太合适的 所以就需要一些数值的最优化方法对最小二乘问题进行求解 在SLAM中 常用的算法有 梯度下降法 牛顿法 以及牛顿法
  • 数字后端——布局

    由于I O单元和模块的布放已经在布图规划时完成 因此布局的剩余任务主要是对标准单元的布局 布局方案在布图规划时就已经做了决定 要么选择展平式布局 要么就是层次化布局 一 布局目标 布局的目标也即布局内容实施之后所要达到的预期值 可以归纳为以
  • 【网络基础】路由表,分组转发算法

    前提 IP数据报的首部中没有地方可以用来指明 下一跳路由器的 IP 地址 那么 当路由器接受到一个待转发的报文时 是如何确定将该报文的传向呢 在此 我们引入 路由表 概念 路由表如图所示 当一个IP报文传到路由器R2时 则会通过查询R2所维
  • js基础--获取浏览器当前页面的滚动条高度的兼容写法

    前言 在开发中 兼容性问题是最常见的 今天就来介绍一下关于获取滚动条高度的兼容性写法 宽度同理 我在这里就不一一解释了 各浏览器的写法 IE6 7 8 document documentElement scrollTop IE9以上 win
  • 3D图形渲染技术

    如何用2D平面展现3D图形 2D图形 在一个平面中有了两个点 知道了他们的XY坐标 就可以把它们链接起来画成一条线 通过控制A和B点的XY坐标可以控制一条线 在3D图像中 点的坐标多了一个Z轴的坐标系 但是在2D的屏幕坐标上不可能有XYZ立
  • linux上mysql整库完全备份命令(包括函数和存储过程)

    mysqldump E R triggers single transaction master data 2 default character set utf8 u root p 库名 gt tmp 库名 sql R表示导出functi
  • 【毕业设计】基于SSM实现酒店管理系统(论文+源码+ppt+视频)

    技术架构SSM 1 Spring是一个开源的Java Java EE全功能栈的应用程序框架 以Apache许可证形式发布 也有 NET平台上的移植版本 当需要用到某一对象时不需要程序员在代码中增加一个新对象而是在可扩展标记语言 extens
  • php中流行的rpc框架详解(修改版)

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 什么是RPC框架 如果用一句话概括RPC就是 远程调用框架 Remote Procedure Call 那什么是远程调用 通常我们调用一个php中的方法 比如这样一个函数方
  • Windows 文件共享功能使用教程,局域网多台电脑之间传送文件

    设想一下 家里或者公司有多台电脑 连接同一个Wifi 也就是处于同一个局域网中 在不能使用微信 网盘的文件传输功能的情况下 这多台电脑之间 就只能用U盘传送数据吗 不 Windows系统中已经提供了文件共享功能 比如一些公司或者学校机房经常
  • H5 静态页面跳转微信小程序

    官方文档指引 开放标签说明文档 静态网站 H5 跳小程序 H5 静态页面跳转微信小程序 准备工作 开放标签 开放对象 版本要求 使用步骤 1 绑定域名 2 引入 jweixin js 需要 1 6 0 版本 3 设置 wx config 4
  • 服务器时间管理器

    时间戳管理器 using System using UnityEngine public class SyncTime Singleton
  • Tomcat中404/500 错误,自定义错误页面

    Tomcat中404 500 错误 自定义错误页面 当服务器出现404 500错误时候希望能够给用户友好的现实界面 只需要在项目的web xml中添加一些配置
  • unity和ffmpeg修改局部视频速度

    unity版本2020 3 17 前言 最近有个功能是 在一个展馆里面 有一个摄像头旋转拍照 拍一圈 本来功能很简单 就录屏就可以了上传生成二维码就ok了 但是 需要一个视频中间快两边变慢的效果 查了很多资料 最终决定使用ffmpeg和un
  • 移动端H5页面,上下滑动翻页

    升级版本 https blog csdn net qq 16494241 article details 122239278 改用原生JS编写 此版本基于JQ 可设置页面内容元素内部滚动及滚动至顶部或最底部触发翻页效果 PC端模式也可鼠标滑