#css #plotly #transcrypt
#css #plotly #транскрипция
Вопрос:
У меня есть несколько встроенных блоков с графиками в них. На данный момент я подключаю их все к отдельным экземплярам одного и того же графика, но в конце они будут разными.
Когда я пытаюсь их стилизовать, например
padding: 10px;
border: 1px solid gray;
Plotly создает двойную границу и игнорирует мои отступы.
Конечно, я мог бы обернуть plotly divs во внешние divs и оформить их, но наверняка должен быть способ сделать plotly divs, то есть divs с идентификатором, который выбирается Plotly.plot, подчиняться общему CSS, а не делать что-то свое?
Я использую компилятор Transcrypt Python для JavaScript и простой plotly.js библиотека, без каких-либо удаленных устройств. Код выглядит следующим образом:
HTML:
<html>
<head>
<style>
div {
display: inline-block;
overflow: hidden;
box-sizing: border-box;
padding: 10;
width: 500;
height: 500;
border: 1px solid gray;
}
</style>
<script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
</head>
<body>
<div id="lin"></div>
<div id="log"></div>
<div id="polar"></div>
<div id="ribbon"></div>
<div id="wireframe"></div>
<div id="surface"></div>
<div id="bar"></div>
<div id="pie"></div>
<div id="gant"></div>
<script src="__javascript__/plotly_demo.js"></script>
</body>
</html>
Python:
__pragma__ ('jskeys') # For convenience, allow JS style unquoted string literals as dictionary keys
import numscrypt
import math
xValues = [2 * math.pi * step / 200 for step in range (201)]
yValues = [math.sin (xValue) 0.5 * math.sin (xValue * 3 0.25 * math.sin (xValue * 5)) for xValue in xValues]
for id in ('lin', 'log', 'polar', 'ribbon', 'wireframe', 'surface', 'bar', 'pie', 'gant'):
Plotly.plot (
document.getElementById (id),
[{
x: xValues,
y: yValues
}],
{
margin: {t: 0}
}
)
}
Ответ №1:
Я обновил вашу разметку. Оберните ваши графические разделы .wrapper
элементом для упрощения форматирования. Встроенные блочные элементы создают некоторое пространство на экране, вы можете предотвратить это, просто используя свойство CSS float
. Не забудьте очистить значение float, чтобы предотвратить свертывание родительского элемента, как я сделал в обновленном коде. Я также применил некоторое отрицательное поле, чтобы избавиться от двойной границы:
<html>
<head>
<style type="text/css">
.clearfix:after {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.wrapper{
padding: 1px 0 0 1px;
}
.wrapper div {
float: left;
overflow: hidden;
box-sizing: border-box;
padding: 10px;
width: 500px;
height: 500px;
border: 1px solid gray;
margin-top: -1px;
margin-left: -1px;
}
</style>
<script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
</head>
<body>
<div class="wrapper clearfix">
<div id="lin"></div>
<div id="log"></div>
<div id="polar"></div>
<div id="ribbon"></div>
<div id="wireframe"></div>
<div id="surface"></div>
<div id="bar"></div>
<div id="pie"></div>
<div id="gant"></div>
</div>
<script src="__javascript__/plotly_demo.js"></script>
</body>
</html>
Вы можете проверить эту страницу, чтобы понять, как .clearfix
на самом деле работает — http://www.tutorialrepublic.com/css-tutorial/css-alignment.php
Комментарии:
1. Я пробовал ваш HTML, но я все еще получаю двойные границы, а отступ размером 10 пикселей игнорируется. То, что мне нужно, — это однолинейная граница вокруг каждого графика, как указано в CSS.
2. Просто скопируйте и вставьте этот код в пустой HTML-файл и просмотрите эту страницу в браузере. Вы поймете, что я пытаюсь сказать.
3. Это именно то, что я сделал. Я открыл пустой файл и скопировал в него ваш html. Затем загрузил его в браузер. Графики теперь смежны, чего я не хочу, но все же граница — это не одна строка, а поле в поле для каждого графика. Так что все в порядке, если у каждого графика есть своя отдельная граница, а не границы, которые объединяются. Но я бы хотел одну единственную границу на график. Прямо сейчас есть тонкая внешняя граница и внутренняя граница, левая и верхняя стороны которых имеют размер 2 пикселя, а не один, создавая своего рода эффект тени.