<div class="row">
<div class="col"></div>
<div class="col"></div>
<div class="col"></div>
<div class="col"></div>
<div class="col"></div>
</div>
<style>
.row {
width: 300px;
display: flex;
flex-wrap: wrap;
align-content: flex-start;
}
.col{
flex: 0 0 33.333333%;
height: 80px;
box-sizing: border-box;
border: 1px solid #dcdfe6;
}
</style>你的每一個(gè)按鈕綁定的事件是一樣的,當(dāng)startBtn變的時(shí)候,當(dāng)然都變了
這個(gè)思路是錯(cuò)的
你可以換成保存播放的index,點(diǎn)擊這只當(dāng)前播放的index
應(yīng)該是:以一到兩位數(shù)字(0-9)后跟一個(gè)冒號(hào)(:)和一個(gè)空格( )開頭,并以非貪婪模式匹配任意字符(不包括換行符),最后是一個(gè)冒號(hào)(:)
你可以使用這個(gè)在線工具來測(cè)試你的正則,它也會(huì)給你詳盡的解釋
websocket而且是繼承于 swoole_server的 有心跳機(jī)制的。
多讀官方文檔。
postman 里 Content-Type 是 application/x-www-form-urlencoded, Body 為 from-data 的話會(huì)在 $_POST 里
Content-Type 是 application/json, Body 為 raw (JSON) 用 file_get_contents("php://input") 接收
也就是 為啥在 input 里的原因吧
一般云服務(wù)的對(duì)象存儲(chǔ)只有簡單的防盜鏈設(shè)置(也就是信任域名),針對(duì)你的情況我覺得可以先設(shè)置信任域名,只能在你的網(wǎng)站上訪問,再在自己的網(wǎng)站上設(shè)置不登錄看不到圖片(用統(tǒng)一的圖片代替)或者干脆不登錄看不到文章。
array_keys 獲取數(shù)組所有的鍵值
array_intersect 獲取兩個(gè)數(shù)組相同的元素
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
這個(gè)不用箭頭函數(shù)吧
你設(shè)置一下line-height等于hieght,讓他垂直居中就可以了呀
getSelection()
可以獲取到點(diǎn)擊位置的節(jié)點(diǎn)以及位置信息
fig = df.plot(title='標(biāo)題', fontsize=20)
fig.axes.title.set_size(20)花了兩天啃了一點(diǎn)D3.JS的書,
基本實(shí)現(xiàn)過程就是繪制畫布,在畫布中確定各個(gè)點(diǎn)的位置,然后利用線段生成器連線,在各個(gè)點(diǎn)上添加p和text標(biāo)簽,繪制原點(diǎn),加入日期和xxxx內(nèi)容。
// dataset格式
var dataset = [{
{
count: 0,
data: [
{
fieldValue: ''
},
{
fieldValue: ''
},
{
fieldValue" ''
},
...
],
time: ''
}]
// 繪制畫布
var svg = d3.select("#relevanceRuleConfig").append("svg")
.attr('id','PathId')
.attr("width", function(){
if(dataset.length > 6 ){
return (80 + dataset.length * 150); // 元素過多超出畫布時(shí)修改畫布長度
}else{
return 960; // 畫布默認(rèn)寬度
}
})
.attr("height", height-80)
.append("g")
// 線段點(diǎn)的數(shù)據(jù)
var lines = [];
var x = 60;
var y = 180;
for(var index in dataset){
lines.push([x,y]);
x += 150; // 點(diǎn)與點(diǎn)之間間隔150px
}
// 創(chuàng)建線段生成器
var linePath = d3.svg.line();
// 添加路徑
svg.append('path')
.attr('d', linePath(lines)) // 使用了線段生成器
.attr('stroke', '#666')
.attr('stroke-width', '1px')
.attr('fill', 'none');
var addNode = function(i){
var self = this;
var nodeData = [dataset[i]];
var siteSave = [];
var node = svg.selectAll()
.data(nodeData)
.enter()
.append('g')
.attr('transform',function(d){
var x = 60 + 150 * i;
var y = 180;
return 'translate(' + x + ',' + y +')'
})
// 添加節(jié)點(diǎn)圖標(biāo)
node.append("circle")
.attr("r", 5)
.attr('fill','#f4952d');
// 添加日期文本
node.append("text")
.attr("dx", -30) //定義文本顯示x軸偏移量
.attr("dy", function(d){ return i%2?-42:50}) //定義文本顯示y軸偏移量
.attr('fill','#f4952d')
.style("text-anchor", 'start')//文字對(duì)齊顯示
.style('font-family','Times New Roman')
.text(function(d) { return d.date; });
// 添加日期外矩形
node.append("rect")
.attr('width',85)
.attr('height',25)
.attr("x", -40) //定義矩形x軸偏移量
.attr("y", function(d){ return i%2?-60:31}) //定義矩形y軸偏移量
.attr("rx", 5) //圓角
.attr("ry",5) //圓角
.attr('fill','none')
.attr("stroke", '#f4952d')
for(var j in nodeData[0].name){
//顯示前五家媒體
node.append("text")
.attr("dx", -30)
.attr("dy", function(d){
if(!(i%2)){
if(d.count > 5){
return -60 + -25 * j;
}else{
return -15 - 25 * j;
}
}else{
return 25 + 25*j;
}
})
.attr('class','siteName')
.attr('value',function(d){ return d.date})
.attr('class',function(d){ return d.date})
.style("text-anchor", 'start') //文字對(duì)齊顯示
.text(function(d) { return d.name[j]; })
//這兩個(gè)交互事件是用于將同一天的所有網(wǎng)站統(tǒng)一樣式的,如果之后需要每個(gè)網(wǎng)站單獨(dú)添加點(diǎn)擊事件可以直接刪除
.on('mouseover',function(){
var className = $(this).attr("value");
$('.' + className).css({'font-size':'16px','fill':'#f4952d','cursor':'pointer','transition':'all 0.5s ease','-moz-transition': 'all 0.5s ease','-webkit-transition':' all 0.5s ease','-o-transition':'all 0.5s ease'})
})
.on('mouseout',function(){
var className = $(this).attr("value");
$('.' + className).css({'font-size':'14px','fill':'#333','transition':'all 0.2s ease','-moz-transition': 'all 0.2s ease','-webkit-transition':' all 0.2s ease','-o-transition':'all 0.2s ease'})
})
.on('click',getData);
}
if(nodeData[0].count == 0){
node.append("text")
.attr("dx", -25)
.attr("dy",function(){
if(!(i%2)){
return -15;
}else{
return 25;
}
})
.text('暫無數(shù)據(jù)')
.style('fill','#999')
.style('font-size','14px')
.style('font-family','Microsoft Yahei')
}
if(nodeData[0].count > 5){
// 媒體大于五家加入“...”
node.append("text")
.attr("dx", -30)
.attr("dy", function(d){
if(!(i%2)){
return -40;
}else{
return 145;
}
})
.attr('value',function(d){ return d.date})
.attr('class',function(d){ return d.date})
.style("text-anchor", 'start')//文字對(duì)齊顯示
.text('...')
.on('click',getData);
// 顯示媒體參與數(shù)量
node.append("text")
.attr("dx", -30)
.attr("dy", function(d){
if(!(i%2)){
return -15;
}else{
return 170;
}
})
.attr('fill','#666')
.attr('class','mediaJoin')
.attr('value',function(d){ return d.date})
.style("text-anchor", 'start')//文字對(duì)齊顯示
.text(function(d) { return ('共' + d.count + '家媒體參與'); })
.on('click',getData);
}
}
for(var index in dataset){
addNode(index)
}
if (dataset.length == 1){
svg.attr('transform','translate(400,0)')
}else if (dataset.length == 2){
svg.attr('transform','translate(320,0)')
}else if (dataset.length == 3){
svg.attr('transform','translate(240,0)')
}else if (dataset.length == 4){
svg.attr('transform','translate(160,0)')
}else if (dataset.length == 5){
svg.attr('transform','translate(80,0)')
}else{
svg.attr('transform','translate(0,0)')
}
這是最后實(shí)現(xiàn)的魚骨圖效果
ajax輪詢和websocket都可以,但是我感覺還是websocket更好,輪詢是因?yàn)闆]有websocket的時(shí)候一種長連接通信技術(shù)
找到解決方法了,當(dāng)onDragOver的時(shí)候,讓fakeMask變成100%*100%,否則不顯示
onDragOver(event){
this.setState({
DragOver:true,
})
event.preventDefault()
}
createChild(){
if(!this.state.children) return;
var tmp = [];
for (let j = 0; j < this.state.children.length; j++) {
if (this.state.children[j].props.dragable) {
tmp.push(<div className={style.ChildBox} key={'dropBox'+j} id={j}
draggable={true} //設(shè)置可拖拽
onDragStart={this.onDragStart.bind(this,j)} // 設(shè)置拖動(dòng)開始Fun
onDragEnd={this.onDragEnd}
onDragOver={this.onDragOver}
>
<div className={[style.fakeMask,this.state.DragOver?style.actmask:''].join(' ')} id={j}></div>
{this.state.children[j]}
</div>)
} else {
tmp.push(<div className={style.ChildBox} key={'dropBox'+j} id={j}><div className={style.fakeMask} id={j}></div>{this.state.children[j]}</div>)
}
}
return tmp
}線程安全問題在于有共享狀態(tài),只要不共享servlet成員變量,或者設(shè)置成員變量但進(jìn)行正確的同步,便不存在線程安全問題。
不在站點(diǎn)下的需要在vue.config.js中加上baseUrl: './',默認(rèn)是/
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國成功上市,融資1
北大課工場(chǎng)是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國制造2025”,實(shí)現(xiàn)中華民族偉大復(fù)興的升級(jí)產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。