123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- <template>
- <div>
- <div class="text-container" :style="{height:height,width:width}">
- <ul class="allBirth">
- <li v-for="(item,index) in politicalBirthdayList" class="info">
- <svg-icon icon-class="dangao" class="dangao"></svg-icon>
- <span style="padding-left: 20px">{{item.partyEntryTime}}</span>
- <span style="padding-left: 20px">{{item.nickName}}</span>
- </li>
- </ul>
- </div>
- </div>
- </template>
- <script>
- import { listPoliticalBirthday } from "@/api/branch/member";
- const totalDuration = 2000;
- export default {
- name: "BrithChart",
- props: {
- width: {
- type: String,
- default: '100%'
- },
- height: {
- type: String,
- default: '210px'
- }
- },
- data() {
- return {
- // 查询参数
- queryParams: {},
- // 政治生日列表
- politicalBirthdayList: null,
- }
- },
- created() {
- this.listPoliticalBirthday();
- },
- methods: {
- /** 查询政治生日列表 */
- listPoliticalBirthday() {
- listPoliticalBirthday(this.queryParams).then(response => {
- this.politicalBirthdayList = response.data;
- //判断是否需要滚动
- if (this.politicalBirthdayList.length > 4) {
- //设置文字滚动一轮时间
- let elem = document.querySelector('.allBirth');
- let state = elem.style['animation'];
- let time = this.politicalBirthdayList.length * 2
- elem.style['animation'] = 'myMove ' + time + 's linear infinite';
- let state1 = elem.style['animation-fill-mode'];
- elem.style['animation-fill-mode'] = 'forwards';
- //设置文字无缝滚动高度
- let param = this.politicalBirthdayList.length * 50
- let myFirstkeyframes = "@keyframes myMove{0% {transform: translateY(200px);}100% {transform: translateY(-" + param +"px);}}";
- let style = document.createElement("style");
- style.setAttribute("type", "text/css");
- document.head.appendChild(style);
- const sheet = style.sheet;
- sheet.insertRule(myFirstkeyframes, 0);
- }
- });
- },
- }
- }
- </script>
- <style>
- .text-container {
- line-height: 30px;
- overflow: hidden;
- }
- .dangao {
- width: 40px !important;
- height: 40px !important;
- }
- .info {
- font-weight:bold;
- list-style: none;
- display: flex;
- margin: 10px 0 0 0;
- align-items: center; /* 垂直居中 */
- border-radius:5px 5px 5px 5px ;
- /*border: 2px solid rgba(41, 107, 155, 0.71);*/
- background-color: transparent;
- }
- .allBirth {
- margin: -10px 0 0 0;
- padding: 0 20px 0 20px;
- /*animation: myMove 10s linear infinite;
- animation-fill-mode: forwards;*/
- }
- /*文字无缝滚动*/
- /*@keyframes myMove {
- 0% {
- transform: translateY(200px);
- }
- 100% {
- transform: translateY(-300px);
- }
- }*/
- /*文字停顿滚动*/
- @keyframes myMove2 {
- 0% {
- transform: translateY(0);
- }
- 10% {
- transform: translateY(-30px);
- }
- 20% {
- transform: translateY(-30px);
- }
- 30% {
- transform: translateY(-60px);
- }
- 40% {
- transform: translateY(-60px);
- }
- 50% {
- transform: translateY(-90px);
- }
- 60% {
- transform: translateY(-90px);
- }
- 70% {
- transform: translateY(-120px);
- }
- 80% {
- transform: translateY(-120px);
- }
- 90% {
- transform: translateY(-150px);
- }
- 100% {
- transform: translateY(-150px);
- }
- }
- .info span {
- padding-top: 5px;
- }
- </style>
|