уже довольно много разных ГУИ либ появилось начиная собсно с самого НТМЛ и их методы "умной" расстановки элементов отличаются
как вы думаете какой идеальный был бы набор свойств для настройки позиционирования и автоматического подстройки размеров?
или какой из существюущих вам кажется идеальным?
Я изъездил эту страну вдоль и поперек, общался с умнейшими людьми и я могу вам ручаться в том, что обработка данных является лишь причудой, мода на которую продержится не более года. (с) Эксперт, авторитет и профессионал из 1957 г.
у меня тут есть задача замутить свою простую разметку, так вот я думаю какой подход выбрать, а то математики много и переделать не будет простой задачей
вот например что лучше когда контейнер выравнивает контент по горизонтали или когда сам элемент говорит как его выравнивать?
Я изъездил эту страну вдоль и поперек, общался с умнейшими людьми и я могу вам ручаться в том, что обработка данных является лишь причудой, мода на которую продержится не более года. (с) Эксперт, авторитет и профессионал из 1957 г.
Здравствуйте, Kingofastellarwar, Вы писали:
K>как вы думаете какой идеальный был бы набор свойств для настройки позиционирования и автоматического подстройки размеров?
Мне XAML понравился. Но там не "набор свойств", а скорее "набор расставлятелей".
Здравствуйте, Kingofastellarwar, Вы писали:
K>вот например что лучше когда контейнер выравнивает контент по горизонтали или когда сам элемент говорит как его выравнивать?
Думаю, для точного ответа неплохо бы ещё больше уточнить характер выравниваемых объектов. Это фигуры? Виджеты? Разметка а-ля ХТМЛ?
Идеальный, на мой взгляд, вариант (живой реализации не видел):
1. Каждый объект вписан в прямоугольник известного (вычислимого размера)
2. Объекты объединяются в группы, внутри которых происходит их распределение в соответствии с выбранным алгоритмом (layout).
3. На границе описанного прямоугольника для каждого объекта определены якорные точки: по умолчанию они являются вычислимыми, но могут быть переопределены. Якорные точки обладают семантикой — их назначение задавать точку привязки данного элемента интерфейса в выбранном алгоритме расположения объектов в группе.
4. Группы являются объектами и имеют собственный описанный прямоугольник с якорными точками. Якорные точки группы могут вычисляться на основе якорных точек элементов группы.
Пример:
Объект 1 — фраза на английском языке с неразрывными пробелами "Hello, world" с внутренним отступом 0.1 em.
Якорные точки/семантика
1. середины сторон описывающего прямоугольника — алгоритм "выравнивание по центру"
2. базовая линия текста — алгоритм "выравнивание по базовой линии"
3. углы прямоугольника — алгоритм "выравнивание по границе" (top/bottom/left/right)
Объект 2 — изображение высотой 0.5 em, со смещенной на 0.5em вверх базовой линией
Якорные точки/семантика
1. середины сторон описывающего прямоугольника — алгоритм "выравнивание по центру"
2. точка, соответствующая базовой линии текста со шрифтом размера 0.5em, смещенной на 0.5em вверх — алгоритм "выравнивание по базовой линии"
3. углы прямоугольника — алгоритм "выравнивание по границе" (top/bottom/left/right)
Объект 3 — группа объектов 1 и 2 с алгоритмом "построчное размещение; выравнивание по левому краю; выравнивание по базовой линии", и точками вертикального выравнивания по центру, расположенными с отступом 0.3em от верхней границы объекта.
Объекты расположены относительно друг друга так, что правая точка базовой линии текста совпадает с левой точкой базовой линии изображения, если ширина позволяет разместить их на одной строке,
или так, что левый верхний угол изображения совпадает с левым нижним текста, если необходимо выполнить перенос.
1. Середины сторон описывающего прямоугольника — алгоритм "выравнивание по центру"
2. левая точка базовой линии текста и правая точка базовой линии изображения — точки базовой линии группы
3. углы прямоугольника — алгоритм "выравнивание по границе" (top/bottom/left/right)
а как вот насчет такого момента, а если позиционирование задавать не контейнеру а содержимом?
ну т.е. чтобы <div align=left /> означал не то что контент будет выровнен влево, а что сам div будет в родительском контенте будет выровнен влево
проблема тут только в том , что как элементы с разным позиционированием будут заполнять пространство контейнера? возможно логика будет слишком сложной
но может уже дето такая реализация уже была испробована?
потому что чисто из практики я заметил что такой штуки сильно не хватает
Я изъездил эту страну вдоль и поперек, общался с умнейшими людьми и я могу вам ручаться в том, что обработка данных является лишь причудой, мода на которую продержится не более года. (с) Эксперт, авторитет и профессионал из 1957 г.
Здравствуйте, Kingofastellarwar, Вы писали:
K>а как вот насчет такого момента, а если позиционирование задавать не контейнеру а содержимом? K>ну т.е. чтобы <div align=left /> означал не то что контент будет выровнен влево, а что сам div будет в родительском контенте будет выровнен влево
<div style="margin-right:*">
Т.е. чтобы прижать элемент к левой границе контейнера ему справа нужно приделать "пружину".
Соотв. чтобы он оказался по центру контейнера то пружины нужно приделать со всвех четырех сторон:
Здравствуйте, Baudolino, Вы писали:
B>Идеальный, на мой взгляд, вариант (живой реализации не видел):
Сразуфтопку.
Прошу прощения за прямоту. Но дело в том, что идеального варианта не существует вообще — всегда нужно рассматривать решаемую задачу.
Вот, например, задачу вёрстки текста можно рассматривать как частный случай layout-а глифов.
Ну так вот оказывается, что банальная штука типа кернинга не позволяет абстрагировать глифы "объемлющими прямоугольниками". Надо учитывать форму глифов.
Хорошие шрифты содержат в себе kerning hints, чтобы помогать выравнивать оптическую плотность текста для различных цепочек глифов.
И тем не менее, ни один дизайнер не доверяет автоматическому кернингу в mission-critical вещах типа логотипов, слоганов, и вообще вёрстки крупного шрифта.
Расположение элементов UI страдает теми же особенностями. Расположение "круглых" объектов и расположение "квадратных" объектов требуют разных margin-ов, если хочется, чтобы интервалы были визуально одинаковыми. Дизайнеры при отрисовке графических решений пользуются всякими вспомогательными средствами типа guidelines и anchor points, а потом всё равно подправляют результат руками, в зависимости от поставленной задачи.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
а это либа существует в таком виде(с++) который отвязан от синтаксиса, т.е. содержит только математику и минимально необходимые структуры
Я изъездил эту страну вдоль и поперек, общался с умнейшими людьми и я могу вам ручаться в том, что обработка данных является лишь причудой, мода на которую продержится не более года. (с) Эксперт, авторитет и профессионал из 1957 г.
Здравствуйте, Kingofastellarwar, Вы писали:
K>а это либа существует в таком виде(с++) который отвязан от синтаксиса, т.е. содержит только математику и минимально необходимые структуры
Апну, ибо на что-то такое натыкался. Пусть автор подскажет, публиковалась ли где-то реализация отдельно.
Здравствуйте, flаt, Вы писали:
F>Здравствуйте, Kingofastellarwar, Вы писали:
K>>а это либа существует в таком виде(с++) который отвязан от синтаксиса, т.е. содержит только математику и минимально необходимые структуры F>Апну, ибо на что-то такое натыкался. Пусть автор подскажет, публиковалася ли где-то реализация отдельно.
я так глянул одним глазом , вроде там чисто математика есть, причем портировано под всё что тока можно
Я изъездил эту страну вдоль и поперек, общался с умнейшими людьми и я могу вам ручаться в том, что обработка данных является лишь причудой, мода на которую продержится не более года. (с) Эксперт, авторитет и профессионал из 1957 г.