[原创]狗屁不通高中英语作文生成器

想法起源

在git上看到了这么个项目:https://github.com/menzi11/BullshitGenerator

感觉非常有趣,虽然生成的文章基本不可读,随后我就想为什么不做一个生成英语作文的玩具?于是就有了此项目。

效果图

IOcjJK.jpg
IOcvRO.png

我发现我生成的英语作文似乎还TM可读!绝了#笑眼

项目地址

https://github.com/zjh4473/EnglishBullshitGenerator

在线体验地址:https://zjh4473.github.io/EnglishBullshitGenerator/

自用ThinkPHP的common.php 包含各种常用函数封装

<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: 紫旭 <zixutech@gmail.com> <https://www.zixutech.cn>
// +----------------------------------------------------------------------

// 应用公共文件
function assembleJson($code, $status, $message, $data)
{
    return json_encode(['code' => $code, 'status' => $status, 'message' => $message, 'data' => $data]);
}

function assembleTableJson($code, $status, $message, $totalCount, $data)
{
    return json_encode(['code' => $code, 'status' => $status, 'msg' => $message, 'totalCount' => $totalCount, 'data' => $data]);
}

function generateToken($tokenArray)
{
    $token = base64_encode(json_encode($tokenArray));
    $token = encryption($token, 'E');
    return $token;
}

function decryptToken($token)
{
    $tokenArray = encryption($token, 'D');
    $tokenArray = base64_decode($tokenArray);
    $tokenArray = json_decode($tokenArray, true);
    return $tokenArray;
}

// 第二个参数 E加密 D解密
function encryption($string, $operation)
{
    $key = md5(config('encryption_key'));
    $key_length = strlen($key);
    $string = str_replace('_', '/', $string);
    $string = str_replace("-", '\\', $string);
    $string = str_replace("*", '+', $string);
    $string = $operation == 'D' ? base64_decode($string) : substr(md5($string . $key), 0, 8) . $string;
    $string_length = strlen($string);
    $rndkey = $box = array();
    $result = '';
    for ($i = 0; $i <= 255; $i++) {
        $rndkey[$i] = ord($key[$i % $key_length]);
        $box[$i] = $i;
    }
    for ($j = $i = 0; $i < 256; $i++) {
        $j = ($j + $box[$i] + $rndkey[$i]) % 256;
        $tmp = $box[$i];
        $box[$i] = $box[$j];
        $box[$j] = $tmp;
    }
    for ($a = $j = $i = 0; $i < $string_length; $i++) {
        $a = ($a + 1) % 256;
        $j = ($j + $box[$a]) % 256;
        $tmp = $box[$a];
        $box[$a] = $box[$j];
        $box[$j] = $tmp;
        $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));
    }
    if ($operation == 'D') {
        if (substr($result, 0, 8) == substr(md5(substr($result, 8) . $key), 0, 8)) {
            $result = substr($result, 8);
            return $result;
        } else {
            return '';
        }
    } else {
        $result = str_replace('=', '', base64_encode($result));
        $result = str_replace('/', '_', $result);
        $result = str_replace("\\", '-', $result);
        $result = str_replace("+", '*', $result);
        // 正斜杠 / 改为下划线 _ ; 反斜杠 \ 改为减号 - 。
        return $result;
    }
}

//获取用户真实IP
function getIp()
{
    if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
        $ip = getenv("HTTP_CLIENT_IP");
    else
        if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
            $ip = getenv("HTTP_X_FORWARDED_FOR");
        else
            if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
                $ip = getenv("REMOTE_ADDR");
            else
                if (isset ($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
                    $ip = $_SERVER['REMOTE_ADDR'];
                else
                    $ip = "unknown";
    return ($ip);
}

//Remove the exploer'bug XSS
function RemoveXSS($val)
{
    // remove all non-printable characters. CR(0a) and LF(0b) and TAB(9) are allowed
    // this prevents some character re-spacing such as <java\0script>
    // note that you have to handle splits with \n, \r, and \t later since they *are* allowed in some inputs
    $val = preg_replace('/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/', '', $val);
    // straight replacements, the user should never need these since they're normal characters
    // this prevents like <IMG SRC=@avascript:alert('XSS')>
    $search = 'abcdefghijklmnopqrstuvwxyz';
    $search .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $search .= '1234567890!@#$%^&*()';
    $search .= '~`";:?+/={}[]-_|\'\\';
    for ($i = 0; $i < strlen($search); $i++) {
        // ;? matches the ;, which is optional
        // 0{0,7} matches any padded zeros, which are optional and go up to 8 chars

        // @ @ search for the hex values
        $val = preg_replace('/(&#[xX]0{0,8}' . dechex(ord($search[$i])) . ';?)/i', $search[$i], $val); // with a ;
        // @ @ 0{0,7} matches '0' zero to seven times
        $val = preg_replace('/(�{0,8}' . ord($search[$i]) . ';?)/', $search[$i], $val); // with a ;
    }

    // now the only remaining whitespace attacks are \t, \n, and \r
    $ra1 = array('javascript', 'vbscript', 'expression', 'applet', 'meta', 'xml', 'blink', 'link', 'style', 'script', 'embed', 'object', 'iframe', 'frame', 'frameset', 'ilayer', 'layer', 'bgsound', 'title', 'base');
    $ra2 = array('onabort', 'onactivate', 'onafterprint', 'onafterupdate', 'onbeforeactivate', 'onbeforecopy', 'onbeforecut', 'onbeforedeactivate', 'onbeforeeditfocus', 'onbeforepaste', 'onbeforeprint', 'onbeforeunload', 'onbeforeupdate', 'onblur', 'onbounce', 'oncellchange', 'onchange', 'onclick', 'oncontextmenu', 'oncontrolselect', 'oncopy', 'oncut', 'ondataavailable', 'ondatasetchanged', 'ondatasetcomplete', 'ondblclick', 'ondeactivate', 'ondrag', 'ondragend', 'ondragenter', 'ondragleave', 'ondragover', 'ondragstart', 'ondrop', 'onerror', 'onerrorupdate', 'onfilterchange', 'onfinish', 'onfocus', 'onfocusin', 'onfocusout', 'onhelp', 'onkeydown', 'onkeypress', 'onkeyup', 'onlayoutcomplete', 'onload', 'onlosecapture', 'onmousedown', 'onmouseenter', 'onmouseleave', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onmousewheel', 'onmove', 'onmoveend', 'onmovestart', 'onpaste', 'onpropertychange', 'onreadystatechange', 'onreset', 'onresize', 'onresizeend', 'onresizestart', 'onrowenter', 'onrowexit', 'onrowsdelete', 'onrowsinserted', 'onscroll', 'onselect', 'onselectionchange', 'onselectstart', 'onstart', 'onstop', 'onsubmit', 'onunload');
    $ra = array_merge($ra1, $ra2);

    $found = true; // keep replacing as long as the previous round replaced something
    while ($found == true) {
        $val_before = $val;
        for ($i = 0; $i < sizeof($ra); $i++) {
            $pattern = '/';
            for ($j = 0; $j < strlen($ra[$i]); $j++) {
                if ($j > 0) {
                    $pattern .= '(';
                    $pattern .= '(&#[xX]0{0,8}([9ab]);)';
                    $pattern .= '|';
                    $pattern .= '|(�{0,8}([9|10|13]);)';
                    $pattern .= ')*';
                }
                $pattern .= $ra[$i][$j];
            }
            $pattern .= '/i';
            $replacement = substr($ra[$i], 0, 2) . '<x>' . substr($ra[$i], 2); // add in <> to nerf the tag
            $val = preg_replace($pattern, $replacement, $val); // filter out the hex tags
            if ($val_before == $val) {
                // no replacements were made, so exit the loop
                $found = false;
            }
        }
    }
    return $val;
}

//防注入
function abacaAddslashes($var)
{
    if (!get_magic_quotes_gpc()) {
        if (is_array($var)) {
            foreach ($var as $key => $val) {
                $var [$key] = abacaAddslashes($val);
            }
        } else {
            $var = addslashes($var);
        }
    }
    return $var;
}

//检查各项过期时间,过期返回true 没过期返回false
function checkExpire($expiretime)
{
    if (!strtotime($expiretime)) {
        //不是时间
        return true;
    }
    $expiretime = number_format(strtotime($expiretime) - time());
    if ($expiretime <= 0) {
        return true;
    } else {
        return false;
    }
}

//取中间文本
function get_between($input, $start, $end)
{
    $substr = substr($input, strlen($start) + strpos($input, $start), (strlen($input) - strpos($input, $end)) * (-1));
    return $substr;
}

// 生成随机密码
function randomkeys($length, $pureNumber = false)
{
    // 生成字母和数字组成的6位字符串

    if ($pureNumber) {
        $arr = range(0, 9);
    } else {
        $str = range('A', 'Z');

        // 去除大写的O,以防止与0混淆

        unset($str[array_search('O', $str)]);
        $arr = array_merge(range(0, 9), $str);
    }

    shuffle($arr);

    $invitecode = '';

    $arr_len = count($arr);

    for ($i = 0; $i < $length; $i++) {

        $rand = mt_rand(0, $arr_len - 1);

        $invitecode .= $arr[$rand];

    }

    return $invitecode;
}

function getThisWeek()
{

//当前日期
    $sdefaultDate = date('Y-m-d');
//$first =1 表示每周星期一为开始日期 0表示每周日为开始日期
    $first = 0;
//获取当前周的第几天 周日是 0 周一到周六是 1 - 6
    $w = date('w', strtotime($sdefaultDate));
//获取本周开始日期,如果$w是0,则表示周日,减去 6 天
    $week_start = date('Y-m-d', strtotime("$sdefaultDate -" . ($w ? $w - $first : 6) . ' days'));
//本周结束日期
    $week_end = date('Y-m-d', strtotime("$week_start +6 days"));
    return [$week_start, $week_end];
}

function array_sort($array, $keys, $type = 'asc')
{
    $keysvalue = $new_array = array();
    foreach ($array as $k => $v) {
        $keysvalue[$k] = $v[$keys];
    }
    if ($type == 'asc') {
        asort($keysvalue);
    } else {
        arsort($keysvalue);
    }
    reset($keysvalue);
    foreach ($keysvalue as $k => $v) {
        $new_array[$k] = $array[$k];
    }
    return $new_array;
}

/**
 * 系统邮件发送函数
 * @param string $tomail 接收邮件者邮箱
 * @param string $name 接收邮件者名称
 * @param string $subject 邮件主题
 * @param string $body 邮件内容
 * @param string $attachment 附件列表
 * @return boolean
 * @throws \PHPMailer\PHPMailer\Exception
 */
function send_mail($tomail, $name, $subject = '', $body = '', $attachment = null)
{
    $mail = new PHPMailer\PHPMailer\PHPMailer();           //实例化PHPMailer对象
    $mail->CharSet = 'UTF-8';           //设定邮件编码,默认ISO-8859-1,如果发中文此项必须设置,否则乱码
    $mail->IsSMTP();                    // 设定使用SMTP服务
    $mail->SMTPDebug = 3;               // SMTP调试功能 0=关闭 1 = 错误和消息 2 = 消息
    $mail->SMTPAuth = true;             // 启用 SMTP 验证功能
    $mail->SMTPSecure = 'ssl';          // 使用安全协议
    $mail->Host = "smtp.qq.com"; // SMTP 服务器
    $mail->Port = 465;                  // SMTP服务器的端口号
    $mail->Username = "";    // SMTP服务器用户名
    $mail->Password = "";     // SMTP服务器密码
    $mail->SetFrom('发信地址', '邮件标题');
    $replyEmail = '';                   //留空则为发件人EMAIL
    $replyName = '请勿回复本邮件';                    //回复名称(留空则为发件人名称)
    $mail->AddReplyTo($replyEmail, $replyName);
    $mail->Subject = $subject;
    $mail->MsgHTML($body);
    $mail->AddAddress($tomail, $name);
    if (is_array($attachment)) { // 添加附件
        foreach ($attachment as $file) {
            is_file($file) && $mail->AddAttachment($file);
        }
    }
    return $mail->Send() ? true : $mail->ErrorInfo;
}

/**
 * http请求
 * @param string $url 请求地址
 * @param boolean|string|array $params 请求数据
 * @param integer $ispost 0/1,是否post
 * @param array $header
 * @param bool $verify 是否验证ssl
 * return string|boolean          出错时返回false
 * @param bool|array $proxy 代理数组
 * @return bool|mixed
 */
function http_request($url, $params = false, $ispost = 0, $header = [], $verify = false, $proxy = false)
{
    $httpInfo = array();
    $ch = curl_init();
    $ua = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36';
    if (!empty($header)) {
        curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
    }
    curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
    curl_setopt($ch, CURLOPT_TIMEOUT, 60);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_USERAGENT, $ua);

    if ($proxy) {
        curl_setopt($ch, CURLOPT_PROXY, $proxy['ip']); //代理服务器地址
        curl_setopt($ch, CURLOPT_PROXYPORT, $proxy['port']); //代理服务器端口
    }
    //忽略ssl证书
    if ($verify === true) {
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
    } else {
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    }
    if ($ispost) {
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
        curl_setopt($ch, CURLOPT_URL, $url);
    } else {
        if (is_array($params)) {
            $params = http_build_query($params);
        }
        if ($params) {
            curl_setopt($ch, CURLOPT_URL, $url . '?' . $params);
        } else {
            curl_setopt($ch, CURLOPT_URL, $url);
        }
    }
    $response = curl_exec($ch);
    if ($response === FALSE) {
        trace("cURL Error: " . curl_errno($ch) . ',' . curl_error($ch), 'error');
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        $httpInfo = array_merge($httpInfo, curl_getinfo($ch));
        trace($httpInfo, 'error');
        return false;
    }
    curl_close($ch);
    return $response;
}


/**
 * 检查是否是手机访问
 * @return bool
 */
function is_mobile()
{
    $agent = strtolower($_SERVER['HTTP_USER_AGENT']);
    $is_pc = (strpos($agent, 'windows nt')) ? true : false;
    $is_mac = (strpos($agent, 'mac os')) ? true : false;
    $is_iphone = (strpos($agent, 'iphone')) ? true : false;
    $is_android = (strpos($agent, 'android')) ? true : false;
    $is_ipad = (strpos($agent, 'ipad')) ? true : false;


    if ($is_pc) {
        return false;
    }

    if ($is_mac) {
        return false;
    }

    if ($is_iphone) {
        return true;
    }

    if ($is_android) {
        return true;
    }

    if ($is_ipad) {
        return false;
    }
}

 

青椒第二课堂禁毒知识比赛一键满分脚本

大家好,我又来了,昨天发了普法的脚本之后,有几个朋友私信我想找这个青椒第二课堂禁毒知识的脚本,就晚上没事简单看了看
这个脚本跟普法的原理是一样的,用一套做满分的payload重复提交。
下面python代码自取。


几个说明:
1、cookie获取:浏览器进www.2-class.com 开F12开发者工具,登录后随便刷新下网页,找个请求,复制里面请求Header里的cookie内容。是类似于aliyungf_tc=b*******cb6902f3f90635557533a17c27047; acw_tc=2f*****837535aa37366a7fb8b1c7; sid=aeb******887f0075
这样的字符串
2、reqtoken获取:接第一步,开发者工具里点Console(控制台),输入window.__DATA__.reqtoken,然后复制引号内的内容
3、在脚本里填入以上内容,完毕


然后执行一下就可以了。。

注意:52pojie和本站发布的均为同一作者zjh4473

# -*- coding: utf-8 -*-

import requests
import json
import time
import random

# 获取reqtoken的命令: window.__DATA__.reqtoken

cookie = ''
reqtoken = ''


def yi_jian_man_fen():
    url = 'https://www.2-class.com/api/quiz/commit'
    headers = {
        'Cookie': cookie,
        'Content-Type': 'application/json',
        'User-Agent': 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50'
    }
    time = random.randint(100, 350)
    data = {
        "list": [
            {
                "questionId": 2986,
                "questionContent": "B"
            },
            {
                "questionId": 2989,
                "questionContent": "C"
            },
            {
                "questionId": 2990,
                "questionContent": "D"
            },
            {
                "questionId": 2959,
                "questionContent": "C"
            },
            {
                "questionId": 2928,
                "questionContent": "C"
            },
            {
                "questionId": 2960,
                "questionContent": "A"
            },
            {
                "questionId": 2961,
                "questionContent": "C"
            },
            {
                "questionId": 2897,
                "questionContent": "B"
            },
            {
                "questionId": 2930,
                "questionContent": "D"
            },
            {
                "questionId": 2898,
                "questionContent": "B"
            },
            {
                "questionId": 2963,
                "questionContent": "A"
            },
            {
                "questionId": 2932,
                "questionContent": "D"
            },
            {
                "questionId": 2901,
                "questionContent": "A"
            },
            {
                "questionId": 2966,
                "questionContent": "D"
            },
            {
                "questionId": 2934,
                "questionContent": "C"
            },
            {
                "questionId": 2904,
                "questionContent": "D"
            },
            {
                "questionId": 2907,
                "questionContent": "D"
            },
            {
                "questionId": 2972,
                "questionContent": "C"
            },
            {
                "questionId": 2973,
                "questionContent": "A"
            },
            {
                "questionId": 2912,
                "questionContent": "B"
            }
        ],
        "time": time,
        "reqtoken": reqtoken
    }

    result = requests.post(url=url, data=json.dumps(data), headers=headers, verify=False)
    print(result.text)


if __name__ == '__main__':
    yi_jian_man_fen()

 

第三届全国应急管理普法知识竞赛每日刷分脚本

# -*- coding: utf-8 -*-

import requests
import json
import time

auth = '这里填入你的 AuthorizationLg 值'


def dian_zan():
    url = 'http://www.gsosc.cn/prod-api/app/mark/save'
    headers = {
        'AuthorizationLg': auth,
        'Content-Type': 'application/json'
    }
    for num in range(1, 11):
        if num < 10:
            num = '00' + str(num)
        elif 10 <= num < 100:
            num = '0' + str(num)
        data = {
            'projectId': 'emd2021',
            'contentId': f'lesson{num}',
            'type': 'lesson',
            'mark': 1
        }
        # print(json.dumps(data))
        result = requests.post(url=url, data=json.dumps(data), headers=headers)
        print(result.text)


def da_ti():
    url = 'http://www.gsosc.cn/prod-api/app/bzCeShi/saveJJLUserAnswer'
    headers = {
        'AuthorizationLg': auth,
        'Content-Type': 'application/json'
    }
    data = {"projectId": "emd2021",
            "json": "{\"answer\":\"1189f2f0d84e4409a780eb7ae811ceaa#A#17947##832d3802aa394bf98e3a4582831204de#B#5571##640edb8475c34722b32cb3169a13432d#A#5005##1856459845594747bb07abae6395628e#A#3862##8f371cb745c4492da9e7b3d59fdc5e06#A#2214##\",\"time\":45191}",
            "dtId": "emd2021_jlldt"}

    for num in range(0, 5):
        result = requests.post(url=url, data=json.dumps(data), headers=headers)
        print(result.text)
        time.sleep(3)


def study():
    dian_zan()
    da_ti()


if __name__ == '__main__':
    study()

单位让全员搞这个,没办法只能写个这玩意了。
小伙伴们可以把这个做成云函数,每天执行一次就可以了。
很简单的代码,功能分别是每天点10个赞(最多也就10个)和集训营5次满分
自己抓包将AuthorizationLg 的值填到开头的auth 里,类似于Bearer eyJhbGciOiJ********AmBaUBd55vahMRR4YHeQ9e5sA******ra6Tr0T2o8rW0yw 这么个字符串,很长。
也可以自己手动搞,看我这个帖子:https://www.52pojie.cn/thread-1532067-1-1.html

实战营和决战营还没开,开了之后我再更新下。

注意:52pojie和本站发表的帖子为同一个作者。

第三届全国应急普法竞赛集训营的满分请求Payload

废话不多说直接上payload

{"projectId":"emd2021","json":"{\"answer\":\"1189f2f0d84e4409a780eb7ae811ceaa#A#17947##832d3802aa394bf98e3a4582831204de#B#5571##640edb8475c34722b32cb3169a13432d#A#5005##1856459845594747bb07abae6395628e#A#3862##8f371cb745c4492da9e7b3d59fdc5e06#A#2214##\",\"time\":45191}","dtId":"emd2021_jlldt"}

请求地址:http://www.gsosc.cn/prod-api/app/bzCeShi/saveJJLUserAnswer
方法:POST



自己在普法答题那抓包抓一下自己的AuthorizationLg 写在headers里 就可以用了。



这个是集训营5道题全答对payload  请求5次就是5次满分,一次给500活力值。



更新:
楼下有朋友说来个教程。我弄个简单教程教大家咋用哈。
1、下载postman 这个软件
2、新建一个请求,按照我下图的把上面给出的数据写进去。

3、注意上图中body左边的headers那一栏,里面需要写你的认证信息,看下面。

如何抓认证信息
1、下载抓包软件fiddler
2、打开fiddler后,配置SSL抓包,这一步请百度。
3、配置好第2步之后,在filter里加一行 *.gsosc.cn; 注意后面有英文分号,然后点击 “change not yet saved”来保存

4、完毕后在PC微信扫码打开普法答题界面,看一下fiddler是否有数据包输出。
5、随便挑一个 HOST 里有 gsosc.cn 这个字样的数据包,双击它。
6、在右侧上方栏目里依次点击 Inspectors -> Raw , 然后看一下显示的数据里有一行AuthorizationLg: 巴拉巴拉 什么的一大堆。
7、在postman中的headers那一栏,将你在第6步找到的AuthorizationLg: 巴拉巴拉 什么的一大堆,复制上去,按下图这样的

行了就这样吧。。没用过的看着可能比较复杂,但是很简单。。
还不会的建议去看看这个帖子:https://www.52pojie.cn/forum.php?mod=viewthread&tid=854434

Vue中组件库生成的元素修改样式无效的解决方案

问题产生

写项目时使用如elementui,vanui等组件库时,一些组件的子组件会有如图所示的,带有“class__xxx”这样的class,同时在写代码时为了样式不冲突,我们通常都会在每个组件的style上加上scoped,然后就导致更改上述子组件样式时无效。

 

 

 

 

 

 

上述样式我们使用常规css是无法修改的,如下代码所示。

.stats {
  .van-grid-item__content {
    border-radius: 10px !important;
  }
}

解决方案

方案1 使用 /deep/

将上述css写成如下形式

.stats {
  .van-grid-item /deep/ .van-grid-item__content {
    border-radius: 10px !important;
  }
}

/deep/ 是深度选择器,加上这个之后,就可以选中scope之后的子组件。

但是这个方法似乎只在低版本的Vue中有效,我使用的时候报如下错误

 

 

 

 

 

和我有一样问题的同学,请看下面的方法

方法2 使用 ::v-deep

在较新的版本中,使用::v-deep 代替了旧的 /deep/ ,因此将代码改为如下即可解决问题

.stats {
  .van-grid-item::v-deep .van-grid-item__content {
    border-radius: 10px !important;
  }
}

注意,如果要改的元素没有父元素,则直接在开头加上 ::v-deep即可,如下所示

.stats {
  // 没有父元素的情况下
  ::v-deep .van-grid-item__content {
    border-radius: 10px !important;
  }
}

 

[避坑]Vue.js $refs能获取到对象但是子对象获取不到(undefined)的问题

写项目需要用ref获取dom对象来获取元素的属性,Vue的ref属性非常好用,但是今天碰到了问题。

<div v-for="(item, index) in items" :key="index">
    <div ref="content"> </div>
</div>

定义了以上循环,循环内有个div,写上了ref属性。

此时我在methods里写了接口来获取数据,数据到了之后,这个div就有宽度和高度了,我的目的是想取到里面这个div的高度和宽度

在created里写了如下方法

that.getItemList()
that.$nextTick(() => {
    that.divHeight = that.$refs.content[0].offsetHeight
}, false)

此时报错,提示 .content这个对象不存在。

我打印 that.$refs 发现content实际是有的,但是取不到。

在翻阅文档和资料后,找到解决办法:

在更新模板渲染的方法里才能取到,也就是说,在that.getItemList()这个方法里,有一段that.items = resultData。在这赋值之后紧接着获取refs,就可以获取到了。

这也算是个知识点了,写给自己备忘。

如果你跟我有相同的问题,并且看完文章还不明白解决不了,加我QQ10066267。我们共同学习。

【Vue进阶】element ui中switch组件使用注意事项

需求描述

1、根据后台传值动态显示开关状态及文字说明(0为文字,1为图标)

实现方法

Swich默认是boolean类型,而后台传值为number类型,这个时候我们需要用number来取代boolean类型;

 

<template #default="{ row }">
          <el-switch
            v-model="row.status"
            :active-value="1"
            :inactive-value="0"
            active-color="#13ce66"
            inactive-color="#ff4949"
          ></el-switch>
</template>

需要注意的是,必须在active-value和inactive-value前面加冒号,因为不加冒号是string加了冒号才是number,基础知识、

我们使用绑定的方式,同时@change可以传值$event就是switch的当条信息值,或者直接获取绑定的model值state,scope.row为参数,还可以再添加index表示当前列表的序号。
注:改变状态时要注意返回的状态根据状态来选择相应的写法。

 

[代码片段]谷歌的一个不错的CSS样式,不得不说大厂的前端设计师美感就是好。

代码

直接上效果图

我本来以为这个彩色的边框是个背景图片,看了一下源码竟然是个background样式,看来我学识还是太浅。

拿走了拿走了#滑稽

使用方法

实现这个效果需要2个div嵌套,外层的我取class为outer-div,内层的我取class为inner-div

.outer-div{
background: linear-gradient(90deg,#34a853 4%,#4285f4 0%) top/100% 34% no-repeat,linear-gradient(90deg,#fbbc04 50%,#4285f4 0%) top/100% 82% no-repeat,linear-gradient(90deg,#fbbc04 10%,#ea4335 0%) top/100% 100%;
width: 200px;
/* set width yourself */
height: 350px;
/* set height yourself */
padding: 4px;
/* default padding is 4px, you can set any value that makes you feel good */
border-radius: 8px;
/* outer-div's border-radius must be twice larger than the inner-div */
}


.inner-div {
width: 100%;
height: 100%;
border-radius: 4px;
/* inner-div's border-radius must be twice lower than the outer-div */
}

 

测试效果

随便写个DIV测试个效果

我是测试效果的呢

哈哈哈,真的好看诶

河南省大学生中国特色社会主义民族宗教理论知识竞赛答题插件

目前可用的是自动答题题库版,请移步QQ群内下载,完全免费!!!!!!

严禁倒卖,插件会智能识别,发现疑似倒卖行为将封禁你所在学校的使用权!

插件交流qq群:1153448795(可能已满)请加二群:541111130

什么?插件不会用?那你可以进群问啊,都大学生了,别当个傻子。

拒绝白嫖

插件很好用,功能很强大,导员很满意。那么是不是考虑打赏我一下?不多不多,3块钱买杯冰阔落可以吧,看在我这么辛苦给大家更新的份上。支付宝和微信都可以嗷,多少都是心意,谢谢大家。

说明

使用这个插件,可以冻结答题时间,并在答题卡上部直接搜索题库,快速作答

合作可以联系QQ:10066267

关于更新

最近一次更新时间:2021年12月2日。废弃普通版和终极版,新增自动答题题库版

由于我已经不用这玩意了,但是插件本身可能一致适用,如果出现不适用,请联系我的QQ:10066267 并提供测试账号,然后我再适配最新的系统。

并且可能由于系统更新换代的原因,导致功能不能用,如果因为xx原因无法更新了,那就没办法了。

警告:终极版采用的是特殊的方法来一键满分,有被检测到的风险,自己评估风险,使用本插件导致的任何后果作者不承担任何责任。

功能特色

目前我们插件实现了完整的答题优化。

新增超级功能:一键满分,这个功能你需要使用“终极版”插件,安装后会在交卷旁出现一个蓝色的按钮#笑眼!

1、冻结答题时间;启用插件后答题不再计时,你拥有无限答题时间。

2、反作弊;插件自动帮你抹除所有痕迹,你可以尽情作答而无需担心被发现作弊。

3、快捷搜索答案;根据现有题库快速搜索得到答案。

4、自动答题:你打开考试页面就会自动把答案填好,可能有个别遗漏,你自己点一下就OK!(新版题库平均正确律95%以上。如有错题请联系作者修改,将有酬谢)

 

说明

该插件仅为学习交流之用,请勿用于实际用途,由此造成的一切法律责任本站及插件作者不承担任何责任。

本插件全开源,并实行MIT许可协议,请其他开发者及用户做二次修改前保留版权。

安装插件

本插件运行依赖油猴脚本,请按如下教程进行安装。

1、油猴脚本安装

常用浏览器安装:
搜狗浏览器:       http://ie.sogou.com/app/search/Tampermonkey
360安全浏览器: https://ext.se.360.cn/webstore/search/tampermonkey
360极速浏览器:https://ext.chrome.360.cn/webstore/search/tampermonkey
火狐浏览器:       https://addons.mozilla.org/zh-CN/firefox/addon/tampermonkey/?src=search
遨游浏览器:      http://extension.maxthon.cn/detail/index.php?view_id=1680&category_id=
欧朋浏览器:     https://addons.opera.com/zh-cn/extensions/details/tampermonkey-beta/?display=en
(遨游浏览器的是Violentmonkey)

2、答题插件安装

请在安装成功油猴脚本之后点下面按钮

请到群内下载,解压密码在精华消息

欢迎大家来进群交流:1153448795,541111130

 

我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=3hoxr13jt4g0o