css3 transition 和 animation实现横向、纵向 滚动、走马灯( marquee 在H5已被废弃)

css3 transition 和 animation实现横向、纵向 滚动、走马灯( marquee 在H5已被废弃)

横向:

transition写法

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>marquee</title>
<style type="text/css">
body{
padding: 0;
margin: 0;
}
#demo{
width: 100%;
height: 50px;
background: #eee;
position: fixed;
}
#demo>#spa{
word-break:keep-all;
white-space:nowrap;
position: absolute;
left: 100%;
font-size: 30px;
line-height: 50px;
}
</style>
</head>
<body>
    <div id="demo"><span id='spa' >走马灯效果</span></div>
</body>
<script type="text/javascript">
     var spa = document.getElementById("spa");
     var spaw = spa.offsetWidth;
     var bodyw = document.body.clientWidth;
     var w = 0-(spaw+bodyw);
     spa.style.transform = 'translate(' + w + 'px, 0px)';
     spa.style.transition = 'transform 5s linear';
     window.setInterval(function(){
          spa.style.transform = 'translate(0px, 0px)';
          spa.style.transition = 'transform 0s linear';
          window.setTimeout(function(){
               spa.style.transform = 'translate(' + w + 'px, 0px)';
               spa.style.transition = 'transform 5s linear';
          },100)
     },5000)
</script>
</html>

animation写法

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>marquee</title>
<style type="text/css">
#demo{
width: 100%;
height: 50px;
background: #eee;
position: fixed;
}
#demo>span{
word-break:keep-all;
white-space:nowrap;
position: absolute;
left: 100%;
font-size: 30px;
line-height: 50px;
}
#demo>.a{
-webkit-animation:demo 5s infinite;
-webkit-animation-timing-function:linear;
}
</style>
<style id='asty'></style>
</head>
<body>
    <div id="demo"><span id='spa' class='a'>走马灯效果</span></div>
</body>
<script type="text/javascript">
    var spa = document.getElementById("spa");
    var width = 0-(spa.offsetWidth);
    var style = document.getElementById("asty");
    style.innerHTML = '@-webkit-keyframes demo{from {left: 100%;}to {left: '+width+'px;}}';
    spa.className = 'a';
</script>
</html>

 

 

纵向:

一、逐条无缝滚动(无闪动)

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>marquee</title>
    <style type="text/css">
        @-webkit-keyframes scrollText1 {
            0%{
                -webkit-transform: translateY(0px);
            }
            20%{
                -webkit-transform: translateY(-30px);
            }
            40%{
                -webkit-transform: translateY(-60px);
            }
            60%{
                -webkit-transform: translateY(-90px);
            }
            80%{
                -webkit-transform: translateY(-120px);
            }
            100%{
                -webkit-transform: translateY(-150px);
            }
        }

        @keyframes scrollText1 {
            0%{
                transform: translateY(0px);
            }
            20%{
                transform: translateY(-30px);
            }
            40%{
                transform: translateY(-60px);
            }
            60%{
                transform: translateY(-90px);
            }
            80%{
                transform: translateY(-120px);
            }
            100%{
                transform: translateY(-150px);
            }
        }

        .box3{
            position: relative;
            top: 20px;
            left: 20px;
            width: 200px;
            height: 30px;
            overflow: hidden;
            border:1px solid #ccc;
        }

        .border3{
            top: 0px;
            -webkit-animation:scrollText1 8s infinite  cubic-bezier(1,0,0.5,0) ;
            animation:scrollText1 8s infinite  cubic-bezier(1,0,0.5,0) ;
        }

        .border3 div{
            height: 30px;
        }

        .border3:hover{
            animation-play-state:paused;
            -webkit-animation-play-state:paused;
        }
    </style>

</head>
<body>
<div class="box3">
    <div class="border3">
        <div>This is a test 1.</div>
        <div>This is a test 2.</div>
        <div>This is a test 3.</div>
        <div>This is a test 4.</div>
        <div>This is a test 5.</div>
        <div>This is a test 1.</div>
    </div>
</div>
</body>

</html>

 

二、

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>marquee</title>
    <style type="text/css">
        .marquee div {
            display: block;
            width: 100%;
            text-align: center;
            position: absolute;
            overflow: hidden;
            -webkit-animation: marquee 5s linear infinite;
            animation: marquee 5s linear infinite;
        }
        @keyframes marquee {
            0% {
                transform: translateY(-50);
            }
            100% {
                transform: translateY(-230px); // 每行高50
            }
        }
    </style>

</head>
<body>
<div class="marquee">
    <div>
        <p class="label_txt">我是最后一个</p>
        <p>让我掉下眼泪的 不止昨夜的酒</p>
        <p>让我依依不舍的 不止你的温柔</p>
        <p>余路还要走多久 你攥着我的手</p>
        <p>走到玉林路的尽头 坐在(走过)小酒馆的门口</p>
        <p class="label_txt">我是最后一个</p>
    </div>
</div>

 

支付成功后自动跳转页面/倒计时/定时跳转页面

 

 <p>页面将在<span id="show"></span>秒后自动跳转</p>

<script type="text/javascript">
    var t=5;//设定跳转的时间
    setInterval("refer()",1000); //启动1秒定时
    function refer(){
        if(t===0){
            location="{!! url('') !!}"; //#设定跳转的链接地址

        }
        if(t>-1){
            document.getElementById('show').innerHTML=""+t+""; // 显示倒计时
            t--; // 计数器递减
        }

    }
</script>

 

Django 常用命令

创建项目

django-admin.py startproject HelloWorld

创建app
django-admin.py startapp TestModel

创建表结构
$ python manage.py migrate # 创建表结构

$ python manage.py makemigrations TestModel # 让 Django 知道我们在我们的模型有一些变更
$ python manage.py migrate TestModel # 创建表结构

在新增表后重新执行:
$ python manage.py makemigrations TestModel # 让 Django 知道我们在我们的模型有一些变更
$ python manage.py migrate TestModel # 创建表结构

python 标准数据类型

Python有五个标准的数据类型:

  • Numbers(数字)
  • String(字符串)
  • List(列表)
  • Tuple(元组)
  • Dictionary(字典)

List

列表是 Python 中使用最频繁的数据类型。

列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。

列表用 [ ] 标识,是 python 最通用的复合数据类型。

 l = ['A', 'b', 'C']

tuple

元组是另一个数据类型,类似于List(列表)。

元组用”()”标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。

t = ('C', 'D', 'A')

 

dict

字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象集合,字典是无序的对象集合。

两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

字典用”{ }”标识。字典由索引(key)和它对应的值value组成。

d = {'lisa': 90, 'hanmei': 70, 'harry': 85}

 

set

set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。

>>>x = set('runoob') 
>>> y = set('google') 
>>> x, y (set(['b', 'r', 'u', 'o', 'n']), set(['e', 'o', 'g', 'l'])) # 重复的被删除 
>>> x & y # 交集 set(['o']) 
>>> x | y # 并集 set(['b', 'e', 'g', 'l', 'o', 'n', 'r', 'u']) 
>>> x - y # 差集 set(['r', 'b', 'u', 'n']) 
>>>

 

 

php rsa加密解密完整实例

<?php
/**
 * RSA加密
 * env:(PHP 4 >= 4.0.4, PHP 5, PHP 7)
 * 密钥对生成
 * 工具:OpenSSL
 * 生成私钥:genrsa -out rsa_private_key.pem 1024
 * 生成公钥:rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
 * Author:luchanglong
 * Date:2017-12-14
 * **********************************************
 * * 私钥丢失将导致数据永久无法解密
 * *********************************************
 */

header("Content-type: text/html; charset=utf-8");

class RsaTools
{
    //私钥文件路径
    private $rsaPrivateKeyFilePath;

    //私钥值
    private $rsaPrivateKey;

    //公钥文件路径
    private $rsaPublicKeyFilePath;

    //公钥值
    private $rsaPublicKey;

    function __construct()
    {
        $this->rsaPrivateKeyFilePath=dirname(__FILE__).DIRECTORY_SEPARATOR.'key'.DIRECTORY_SEPARATOR.'rsa_private_key.pem';
        $this->rsaPublicKeyFilePath=dirname(__FILE__).DIRECTORY_SEPARATOR.'key'.DIRECTORY_SEPARATOR.'rsa_public_key.pem';
    }

    /**
     *  rsa公钥加密
     **/
    public function rsaEncrypt($data) {
        if($this->checkEmpty($this->rsaPublicKeyFilePath)){
            //读取字符串
            $pubKey= $this->rsaPublicKey;
            $res = "-----BEGIN PUBLIC KEY-----\n" .
                wordwrap($pubKey, 64, "\n", true) .
                "\n-----END PUBLIC KEY-----";
        }else {
            //读取公钥文件
            $pubKey = file_get_contents($this->rsaPublicKeyFilePath);
            //转换为openssl格式密钥
            $res = openssl_get_publickey($pubKey);
        }

        ($res) or die('RSA公钥错误。请检查公钥文件格式是否正确');
        $data=trim($data);
        openssl_public_encrypt($data,$encrypted,$pubKey);//公钥加密
        $encrypted = base64_encode($encrypted);
        return $encrypted;
    }
    /**
     * rsa私钥解密
     **/
    public function rsaDecrypt($data) {

        if($this->checkEmpty($this->rsaPrivateKeyFilePath)){
            //读字符串
            $priKey=$this->rsaPrivateKey;
            $res = "-----BEGIN RSA PRIVATE KEY-----\n" .
                wordwrap($priKey, 64, "\n", true) .
                "\n-----END RSA PRIVATE KEY-----";
        }else {
            $priKey = file_get_contents($this->rsaPrivateKeyFilePath);
            $res = openssl_get_privatekey($priKey);
        }
        ($res) or die('您使用的私钥格式错误,请检查RSA私钥配置');
        $data=base64_decode($data);
        openssl_private_decrypt($data, $dcyCont, $res);
        return $dcyCont;
    }

    /**
     * 校验$value是否非空
     *  if not set ,return true;
     *    if is null , return true;
     **/
    protected function checkEmpty($value) {
        if (!isset($value))
            return true;
        if ($value === null)
            return true;
        if (trim($value) === "")
            return true;

        return false;
    }

}


$r=new RsaTools();
$str="0123456789?><~!@#$%^&*()_+qwertyuiopasdfghjklzxcvbnm";
echo '待加密:'.$str."<br>";
$en=$r->rsaEncrypt($str);
echo '加密后:'.$en.'<br>';
$de=$r->rsaDecrypt($en);
echo '解密后:'.$de;

 

linux 查找文件

1.whereis 文件名

特点:快速,但是是模糊查找,例如 找 #whereis mysql 它会把mysql,mysql.ini,mysql.*所在的目录都找出来.我一般的查找都用这条命令.

2.find / -name 文件名

特点:准确,但速度慢,消耗资源大,例如我想找到php.ini的准确位置,就需要用

#find / -name php.ini

3.locate 文件名

强力推荐的方法,最快,最好的方法.

一个字节(byte)到底有多大?一个字节能表示多大的整数?

因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节。比如两个字节可以表示的最大整数是65535,4个字节可以表示的最大整数是4294967295

mysql 存储过程中使用事务

DROP PROCEDURE IF EXISTS  repair_order_brokerage_pay;
CREATE PROCEDURE repair_order_brokerage_pay()
  BEGIN
    DECLARE error INTEGER DEFAULT 0;
    DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET error=1;

    START TRANSACTION;

    /*******order_id=122*******/
    /*修改订单售后服务状态,修改后会在下次定时任务时自动发放*/
    UPDATE `xm_orders` SET `is_service_over`='0' WHERE (`id`='122') LIMIT 1;
    /*已经执行了销量增加,把增加的销量重新减去,新版本代码将会修改这一做法,用户不发奖励将不修改售后状态和销量*/
    UPDATE `xm_goods` SET `sales_volume`=sales_volume-2 WHERE (`id`='17') LIMIT 1;
    UPDATE `xm_goods` SET `sales_volume`=sales_volume-1 WHERE (`id`='16') LIMIT 1;
    UPDATE `xm_goods` SET `sales_volume`=sales_volume-1 WHERE (`id`='14') LIMIT 1;
 
    IF error = 1 THEN
      ROLLBACK;
    ELSE
      COMMIT;
    END IF;
    select error;
  END;

#执行
CALL repair_order_brokerage_pay();