|
@@ -5,15 +5,25 @@
|
|
|
backgroundImage: `url(${require('../assets/pc_shuju_bg.jpg')})`
|
|
backgroundImage: `url(${require('../assets/pc_shuju_bg.jpg')})`
|
|
|
}"
|
|
}"
|
|
|
>
|
|
>
|
|
|
|
|
+ <el-tooltip class="item" v-if="selectValue !== '320000'" content="返回江苏省地图" placement="bottom">
|
|
|
|
|
+ <el-button
|
|
|
|
|
+ class="back"
|
|
|
|
|
+ type="warning"
|
|
|
|
|
+ icon="el-icon-arrow-left"
|
|
|
|
|
+ circle
|
|
|
|
|
+ @click="changeSelect('320000')"
|
|
|
|
|
+ ></el-button>
|
|
|
|
|
+ </el-tooltip>
|
|
|
|
|
+
|
|
|
<div class="header">{{ title }}</div>
|
|
<div class="header">{{ title }}</div>
|
|
|
<div ref="chart" id="map-chart"></div>
|
|
<div ref="chart" id="map-chart"></div>
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
<script>
|
|
|
-import jiangsu from '../320000_full.json';
|
|
|
|
|
import * as echarts from 'echarts';
|
|
import * as echarts from 'echarts';
|
|
|
import 'echarts-gl';
|
|
import 'echarts-gl';
|
|
|
|
|
+import '../map';
|
|
|
export default {
|
|
export default {
|
|
|
data() {
|
|
data() {
|
|
|
return {
|
|
return {
|
|
@@ -27,19 +37,38 @@ export default {
|
|
|
sndStat: {},
|
|
sndStat: {},
|
|
|
showLables: [],
|
|
showLables: [],
|
|
|
type: 1,
|
|
type: 1,
|
|
|
- title: ''
|
|
|
|
|
|
|
+ title: '',
|
|
|
|
|
+ selectValue: '320000',
|
|
|
|
|
+ valList: [30, 1000],
|
|
|
|
|
+ showLabel: true,
|
|
|
|
|
+ allInfo: {}
|
|
|
};
|
|
};
|
|
|
},
|
|
},
|
|
|
|
|
+ computed: {
|
|
|
|
|
+ mapInfos() {
|
|
|
|
|
+ return echarts.getMap(this.selectValue) ? echarts.getMap(this.selectValue).geoJson.features : [];
|
|
|
|
|
+ },
|
|
|
|
|
+ selectName() {
|
|
|
|
|
+ let allCitys = echarts.getMap('320000') ? echarts.getMap('320000').geoJson.features : [];
|
|
|
|
|
+
|
|
|
|
|
+ let info = allCitys.find(item => {
|
|
|
|
|
+ return item.properties.adcode === this.selectValue;
|
|
|
|
|
+ });
|
|
|
|
|
+ return info ? info.properties.name : '江苏省';
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
mounted() {
|
|
mounted() {
|
|
|
- echarts.registerMap('JiangSu', jiangsu);
|
|
|
|
|
this.type = this.$route.query.type || '1';
|
|
this.type = this.$route.query.type || '1';
|
|
|
this.$nextTick(() => {
|
|
this.$nextTick(() => {
|
|
|
|
|
+ var chartDom = document.getElementById('map-chart');
|
|
|
|
|
+ this.myChart = echarts.init(chartDom);
|
|
|
if (Number(this.type) === 1) {
|
|
if (Number(this.type) === 1) {
|
|
|
this.initScatter();
|
|
this.initScatter();
|
|
|
} else {
|
|
} else {
|
|
|
this.init3D();
|
|
this.init3D();
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
|
|
+ window.addEventListener('resize', this.resize);
|
|
|
},
|
|
},
|
|
|
watch: {
|
|
watch: {
|
|
|
active() {
|
|
active() {
|
|
@@ -47,13 +76,28 @@ export default {
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
methods: {
|
|
methods: {
|
|
|
|
|
+ changeSelect(code, max = 1000, min = 30, showLabel = true) {
|
|
|
|
|
+ console.log(code, max);
|
|
|
|
|
+ if (code.toString().indexOf('00') !== -1) {
|
|
|
|
|
+ this.selectValue = code;
|
|
|
|
|
+ this.valList = [min, max];
|
|
|
|
|
+ this.showLabel = showLabel;
|
|
|
|
|
+ if (Number(this.type) === 1) {
|
|
|
|
|
+ this.initScatter();
|
|
|
|
|
+ } else {
|
|
|
|
|
+ this.init3D();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ resize() {
|
|
|
|
|
+ this.myChart.resize();
|
|
|
|
|
+ },
|
|
|
initScatter() {
|
|
initScatter() {
|
|
|
- this.title = '江苏省考级活动分布图';
|
|
|
|
|
- var chartDom = document.getElementById('map-chart');
|
|
|
|
|
- this.myChart = echarts.init(chartDom);
|
|
|
|
|
|
|
+ this.title = this.selectName + '考级活动分布图';
|
|
|
|
|
+ let _datas = this.produceDataSeries(this.mapInfos.length, this.valList[1]);
|
|
|
this.myChart.setOption({
|
|
this.myChart.setOption({
|
|
|
geo: {
|
|
geo: {
|
|
|
- map: 'JiangSu',
|
|
|
|
|
|
|
+ map: this.selectValue,
|
|
|
label: {
|
|
label: {
|
|
|
show: true,
|
|
show: true,
|
|
|
color: '#fff'
|
|
color: '#fff'
|
|
@@ -73,7 +117,7 @@ export default {
|
|
|
left: 'center',
|
|
left: 'center',
|
|
|
orient: 'horizontal',
|
|
orient: 'horizontal',
|
|
|
min: 0,
|
|
min: 0,
|
|
|
- max: 100,
|
|
|
|
|
|
|
+ max: this.getMax(_datas),
|
|
|
seriesIndex: 0,
|
|
seriesIndex: 0,
|
|
|
calculable: true,
|
|
calculable: true,
|
|
|
inRange: {
|
|
inRange: {
|
|
@@ -81,27 +125,25 @@ export default {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
- let points = jiangsu.features.map(item => {
|
|
|
|
|
- console.log(item.properties.center);
|
|
|
|
|
|
|
+
|
|
|
|
|
+ let points = this.mapInfos.map((item, index) => {
|
|
|
return {
|
|
return {
|
|
|
- value: [...item.properties.center, this.getRamdom(30, 100)],
|
|
|
|
|
- name: item.properties.name
|
|
|
|
|
|
|
+ value: [...item.properties.center, _datas[index]],
|
|
|
|
|
+ name: item.properties.name,
|
|
|
|
|
+ adcode: item.properties.adcode
|
|
|
};
|
|
};
|
|
|
});
|
|
});
|
|
|
- console.log(points);
|
|
|
|
|
this.myChart.setOption({
|
|
this.myChart.setOption({
|
|
|
series: [
|
|
series: [
|
|
|
{
|
|
{
|
|
|
type: 'effectScatter',
|
|
type: 'effectScatter',
|
|
|
coordinateSystem: 'geo',
|
|
coordinateSystem: 'geo',
|
|
|
data: points,
|
|
data: points,
|
|
|
|
|
+ selectedMode: 'single',
|
|
|
symbolSize: function(val) {
|
|
symbolSize: function(val) {
|
|
|
let size = val[2];
|
|
let size = val[2];
|
|
|
- if (size > 100) {
|
|
|
|
|
- size = Math.floor(size / 5);
|
|
|
|
|
- }
|
|
|
|
|
- if (size > 100) {
|
|
|
|
|
- size = Math.floor(size / 20);
|
|
|
|
|
|
|
+ if (size < 20) {
|
|
|
|
|
+ size = size * 5;
|
|
|
}
|
|
}
|
|
|
return size;
|
|
return size;
|
|
|
},
|
|
},
|
|
@@ -115,7 +157,11 @@ export default {
|
|
|
hoverAnimation: true,
|
|
hoverAnimation: true,
|
|
|
label: {
|
|
label: {
|
|
|
formatter: params => {
|
|
formatter: params => {
|
|
|
- return params.name + '\r\n' + params.value[2];
|
|
|
|
|
|
|
+ if (this.showLabel) {
|
|
|
|
|
+ return params.name + '\r\n' + params.value[2];
|
|
|
|
|
+ } else {
|
|
|
|
|
+ return params.value[2];
|
|
|
|
|
+ }
|
|
|
},
|
|
},
|
|
|
show: true,
|
|
show: true,
|
|
|
color: '#fff',
|
|
color: '#fff',
|
|
@@ -129,129 +175,160 @@ export default {
|
|
|
}
|
|
}
|
|
|
]
|
|
]
|
|
|
});
|
|
});
|
|
|
|
|
+
|
|
|
|
|
+ this.myChart.on('click', params => {
|
|
|
|
|
+ this.changeSelect(params.data.adcode, params.data.value[2], 0, false);
|
|
|
|
|
+ });
|
|
|
|
|
+ },
|
|
|
|
|
+ produceDataSeries(account = 7, total = 100) {
|
|
|
|
|
+ let arr = new Array(account).fill(0);
|
|
|
|
|
+ for (let i = 0; i < total; i++) {
|
|
|
|
|
+ var num = parseInt((Math.random() * account).toString());
|
|
|
|
|
+ arr[num]++;
|
|
|
|
|
+ }
|
|
|
|
|
+ return arr;
|
|
|
},
|
|
},
|
|
|
getRamdom(min, max) {
|
|
getRamdom(min, max) {
|
|
|
return Math.floor(Math.random() * (max - min)) + min;
|
|
return Math.floor(Math.random() * (max - min)) + min;
|
|
|
},
|
|
},
|
|
|
|
|
+ getMax(list) {
|
|
|
|
|
+ list.sort((num1, num2) => {
|
|
|
|
|
+ return num1 - num2 < 0;
|
|
|
|
|
+ });
|
|
|
|
|
+ return list[0];
|
|
|
|
|
+ },
|
|
|
init3D() {
|
|
init3D() {
|
|
|
- this.title = '江苏省本月各市考级数量柱状图';
|
|
|
|
|
- var chartDom = document.getElementById('map-chart');
|
|
|
|
|
- this.myChart = echarts.init(chartDom);
|
|
|
|
|
- this.myChart.setOption({
|
|
|
|
|
- color: '#0A2B6A',
|
|
|
|
|
- geo3D: {
|
|
|
|
|
- map: 'JiangSu',
|
|
|
|
|
- shading: 'lambert',
|
|
|
|
|
- instancing: true,
|
|
|
|
|
- label: {
|
|
|
|
|
- show: false,
|
|
|
|
|
- formatter: params => {
|
|
|
|
|
- this.active = params.name;
|
|
|
|
|
- return '';
|
|
|
|
|
- }
|
|
|
|
|
- },
|
|
|
|
|
- light: {
|
|
|
|
|
- main: {
|
|
|
|
|
- intensity: 1
|
|
|
|
|
- },
|
|
|
|
|
- ambient: {
|
|
|
|
|
- intensity: 0.5
|
|
|
|
|
- }
|
|
|
|
|
- },
|
|
|
|
|
- regionHeight: 5,
|
|
|
|
|
- boxHeight: 40,
|
|
|
|
|
- viewControl: {
|
|
|
|
|
- distance: 200,
|
|
|
|
|
- minDistance: 150,
|
|
|
|
|
- alpha: 35,
|
|
|
|
|
- beta: -10,
|
|
|
|
|
- rotateSensitivity: [1, 0]
|
|
|
|
|
- }
|
|
|
|
|
- },
|
|
|
|
|
- zAxis3D: {
|
|
|
|
|
- type: 'value',
|
|
|
|
|
- min: 0,
|
|
|
|
|
- max: 40
|
|
|
|
|
- },
|
|
|
|
|
- series: [
|
|
|
|
|
- {
|
|
|
|
|
- id: 'value',
|
|
|
|
|
- type: 'bar3D',
|
|
|
|
|
- name: '江苏省数据',
|
|
|
|
|
- coordinateSystem: 'geo3D',
|
|
|
|
|
|
|
+ this.title = this.selectName + '本月各市考级数量柱状图';
|
|
|
|
|
+ this.myChart.clear();
|
|
|
|
|
+ setTimeout(() => {
|
|
|
|
|
+ this.allInfo = {
|
|
|
|
|
+ labels: this.mapInfos.map(item => {
|
|
|
|
|
+ return item.properties.name;
|
|
|
|
|
+ }),
|
|
|
|
|
+ data: this.produceDataSeries(this.mapInfos.length, this.valList[1])
|
|
|
|
|
+ };
|
|
|
|
|
+ this.active = this.mapInfos[0].properties.name;
|
|
|
|
|
+ console.log(this.selectValue);
|
|
|
|
|
+ this.myChart.setOption({
|
|
|
|
|
+ color: '#0A2B6A',
|
|
|
|
|
+ geo3D: {
|
|
|
|
|
+ map: `${this.selectValue}`,
|
|
|
shading: 'lambert',
|
|
shading: 'lambert',
|
|
|
- data: [],
|
|
|
|
|
- bevelSize: 0.3,
|
|
|
|
|
- barSize: 5,
|
|
|
|
|
- minHeight: 0,
|
|
|
|
|
- bevelSmoothness: 2,
|
|
|
|
|
- zlevel: 1,
|
|
|
|
|
- silent: true,
|
|
|
|
|
|
|
+ instancing: true,
|
|
|
|
|
+ label: {
|
|
|
|
|
+ show: false,
|
|
|
|
|
+ formatter: params => {
|
|
|
|
|
+ this.active = params.name;
|
|
|
|
|
+ return '';
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
light: {
|
|
light: {
|
|
|
main: {
|
|
main: {
|
|
|
- intensity: 1.2
|
|
|
|
|
|
|
+ intensity: 1
|
|
|
|
|
+ },
|
|
|
|
|
+ ambient: {
|
|
|
|
|
+ intensity: 0.5
|
|
|
}
|
|
}
|
|
|
|
|
+ },
|
|
|
|
|
+ regionHeight: 5,
|
|
|
|
|
+ boxHeight: 40,
|
|
|
|
|
+ viewControl: {
|
|
|
|
|
+ distance: 200,
|
|
|
|
|
+ minDistance: 150,
|
|
|
|
|
+ alpha: 35,
|
|
|
|
|
+ beta: -10,
|
|
|
|
|
+ rotateSensitivity: [1, 0]
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
- {
|
|
|
|
|
- id: 'name',
|
|
|
|
|
- type: 'bar3D',
|
|
|
|
|
- name: '江苏省名称',
|
|
|
|
|
- coordinateSystem: 'geo3D',
|
|
|
|
|
- shading: 'lambert',
|
|
|
|
|
- data: jiangsu.features.map(item => {
|
|
|
|
|
- let value = this.getCenter(item, true);
|
|
|
|
|
-
|
|
|
|
|
- if (this.active === item) {
|
|
|
|
|
- value.push(15);
|
|
|
|
|
- } else {
|
|
|
|
|
- value.push(0);
|
|
|
|
|
- }
|
|
|
|
|
- return {
|
|
|
|
|
- name: item,
|
|
|
|
|
- value: value,
|
|
|
|
|
- itemStyle: {
|
|
|
|
|
- color: this.active === item ? '#FA8816' : '#0A2B6A'
|
|
|
|
|
|
|
+ zAxis3D: {
|
|
|
|
|
+ type: 'value',
|
|
|
|
|
+ min: 0,
|
|
|
|
|
+ max: 40
|
|
|
|
|
+ },
|
|
|
|
|
+ series: [
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 'value',
|
|
|
|
|
+ type: 'bar3D',
|
|
|
|
|
+ name: '江苏省数据',
|
|
|
|
|
+ coordinateSystem: 'geo3D',
|
|
|
|
|
+ shading: 'lambert',
|
|
|
|
|
+ data: [],
|
|
|
|
|
+ bevelSize: 0.3,
|
|
|
|
|
+ barSize: 5,
|
|
|
|
|
+ minHeight: 0,
|
|
|
|
|
+ bevelSmoothness: 2,
|
|
|
|
|
+ zlevel: 1,
|
|
|
|
|
+ silent: true,
|
|
|
|
|
+ light: {
|
|
|
|
|
+ main: {
|
|
|
|
|
+ intensity: 1.2
|
|
|
}
|
|
}
|
|
|
- };
|
|
|
|
|
- }),
|
|
|
|
|
- barSize: 1,
|
|
|
|
|
- minHeight: 0,
|
|
|
|
|
- bevelSmoothness: 0,
|
|
|
|
|
- label: {
|
|
|
|
|
- show: true,
|
|
|
|
|
- formatter: params => {
|
|
|
|
|
- return params.name;
|
|
|
|
|
- },
|
|
|
|
|
- distance: 0,
|
|
|
|
|
- textStyle: {
|
|
|
|
|
- color: '#fff'
|
|
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
- silent: true,
|
|
|
|
|
- zlevel: 2
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 'name',
|
|
|
|
|
+ type: 'bar3D',
|
|
|
|
|
+ name: '江苏省名称',
|
|
|
|
|
+ coordinateSystem: 'geo3D',
|
|
|
|
|
+ shading: 'lambert',
|
|
|
|
|
+ data: this.mapInfos.map(item => {
|
|
|
|
|
+ let value = this.getCenter(item, true);
|
|
|
|
|
+
|
|
|
|
|
+ if (this.active === item) {
|
|
|
|
|
+ value.push(15);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ value.push(0);
|
|
|
|
|
+ }
|
|
|
|
|
+ return {
|
|
|
|
|
+ name: item,
|
|
|
|
|
+ value: value,
|
|
|
|
|
+ itemStyle: {
|
|
|
|
|
+ color: this.active === item ? '#FA8816' : '#0A2B6A'
|
|
|
|
|
+ }
|
|
|
|
|
+ };
|
|
|
|
|
+ }),
|
|
|
|
|
+ barSize: 1,
|
|
|
|
|
+ minHeight: 0,
|
|
|
|
|
+ bevelSmoothness: 0,
|
|
|
|
|
+ label: {
|
|
|
|
|
+ show: true,
|
|
|
|
|
+ formatter: params => {
|
|
|
|
|
+ return params.name;
|
|
|
|
|
+ },
|
|
|
|
|
+ distance: 0,
|
|
|
|
|
+ textStyle: {
|
|
|
|
|
+ color: '#fff'
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ silent: true,
|
|
|
|
|
+ zlevel: 2
|
|
|
|
|
+ }
|
|
|
|
|
+ ]
|
|
|
|
|
+ });
|
|
|
|
|
+ this.myChart.getZr().on('mouseout', () => {
|
|
|
|
|
+ this.isOn = true;
|
|
|
|
|
+ });
|
|
|
|
|
+ this.myChart.getZr().on('globalout', () => {
|
|
|
|
|
+ this.isOn = false;
|
|
|
|
|
+ this.animationMove();
|
|
|
|
|
+ });
|
|
|
|
|
+ this.myChart.getZr().on('click', () => {
|
|
|
|
|
+ let isOn = document.getElementById('map-chart').children[0].style.cursor === 'pointer';
|
|
|
|
|
+ console.log(isOn);
|
|
|
|
|
+ if (isOn) {
|
|
|
|
|
+ let code = this.getCode(this.active);
|
|
|
|
|
+ let index = this.mapInfos.findIndex(item => {
|
|
|
|
|
+ return this.active === item.properties.name;
|
|
|
|
|
+ });
|
|
|
|
|
+ this.changeSelect(code, this.allInfo.data[index], 0, false);
|
|
|
}
|
|
}
|
|
|
- ]
|
|
|
|
|
- });
|
|
|
|
|
- this.myChart.getZr().on('mouseout', () => {
|
|
|
|
|
- this.isOn = true;
|
|
|
|
|
- });
|
|
|
|
|
- this.myChart.getZr().on('globalout', () => {
|
|
|
|
|
- this.isOn = false;
|
|
|
|
|
|
|
+ });
|
|
|
|
|
+ this.changeChoose();
|
|
|
this.animationMove();
|
|
this.animationMove();
|
|
|
- });
|
|
|
|
|
- this.changeChoose();
|
|
|
|
|
- this.animationMove();
|
|
|
|
|
|
|
+ }, 500);
|
|
|
},
|
|
},
|
|
|
changeChoose() {
|
|
changeChoose() {
|
|
|
- const res = {
|
|
|
|
|
- labels: jiangsu.features.map(item => {
|
|
|
|
|
- return item.properties.name;
|
|
|
|
|
- }),
|
|
|
|
|
- data: jiangsu.features.map(item => {
|
|
|
|
|
- return this.getRamdom(10, 100);
|
|
|
|
|
- })
|
|
|
|
|
- };
|
|
|
|
|
|
|
+ const res = { ...this.allInfo };
|
|
|
let regions = res.labels.map(item => {
|
|
let regions = res.labels.map(item => {
|
|
|
return {
|
|
return {
|
|
|
name: item,
|
|
name: item,
|
|
@@ -290,10 +367,11 @@ export default {
|
|
|
name: '江苏省数据',
|
|
name: '江苏省数据',
|
|
|
data: res.labels.map((item, index) => {
|
|
data: res.labels.map((item, index) => {
|
|
|
let value = 0;
|
|
let value = 0;
|
|
|
|
|
+ let _value = res.data[index] < 20 ? res.data[index] * 6 : res.data[index];
|
|
|
if (this.active === item) {
|
|
if (this.active === item) {
|
|
|
- value = res.data[index] + this.desc;
|
|
|
|
|
|
|
+ value = _value + this.desc;
|
|
|
} else {
|
|
} else {
|
|
|
- value = res.data[index];
|
|
|
|
|
|
|
+ value = _value;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
return {
|
|
return {
|
|
@@ -348,7 +426,7 @@ export default {
|
|
|
});
|
|
});
|
|
|
},
|
|
},
|
|
|
getCenter(name, isLable = false) {
|
|
getCenter(name, isLable = false) {
|
|
|
- let info = jiangsu.features.find(item => {
|
|
|
|
|
|
|
+ let info = this.mapInfos.find(item => {
|
|
|
return name === item.properties.name;
|
|
return name === item.properties.name;
|
|
|
});
|
|
});
|
|
|
let center = info ? info.properties.center : [0, 0];
|
|
let center = info ? info.properties.center : [0, 0];
|
|
@@ -357,6 +435,13 @@ export default {
|
|
|
}
|
|
}
|
|
|
return center;
|
|
return center;
|
|
|
},
|
|
},
|
|
|
|
|
+ getCode(name) {
|
|
|
|
|
+ let info = this.mapInfos.find(item => {
|
|
|
|
|
+ return name === item.properties.name;
|
|
|
|
|
+ });
|
|
|
|
|
+ let adcode = info ? info.properties.adcode : '320000';
|
|
|
|
|
+ return adcode;
|
|
|
|
|
+ },
|
|
|
animationMove() {
|
|
animationMove() {
|
|
|
if (this.timeData) {
|
|
if (this.timeData) {
|
|
|
clearTimeout(this.timeData);
|
|
clearTimeout(this.timeData);
|
|
@@ -366,7 +451,7 @@ export default {
|
|
|
if (!this.flag || this.isOn) {
|
|
if (!this.flag || this.isOn) {
|
|
|
return;
|
|
return;
|
|
|
} else {
|
|
} else {
|
|
|
- const citys = jiangsu.features;
|
|
|
|
|
|
|
+ const citys = this.mapInfos;
|
|
|
let index =
|
|
let index =
|
|
|
citys.findIndex(item => {
|
|
citys.findIndex(item => {
|
|
|
return this.active === item.properties.name;
|
|
return this.active === item.properties.name;
|
|
@@ -392,6 +477,14 @@ export default {
|
|
|
background-position: center center;
|
|
background-position: center center;
|
|
|
background-size: cover;
|
|
background-size: cover;
|
|
|
background-repeat: no-repeat;
|
|
background-repeat: no-repeat;
|
|
|
|
|
+ position: relative;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.back {
|
|
|
|
|
+ position: absolute;
|
|
|
|
|
+ left: 30px;
|
|
|
|
|
+ top: 30px;
|
|
|
|
|
+ cursor: pointer;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
.header {
|
|
.header {
|