Как я разрабатываю (CSS) переключатели и маркировки?

Если ваш проект CLI (Common Language Runtime Support), то:

Вы можете использовать класс массива, а не тот, который вы получаете при написании:

#include <array>
using namespace std;

Другими словами, не неуправляемый класс массива, который вы получаете при использовании пространства имен std и при включении заголовка массива, а не неуправляемого класса массива, определенного в пространстве имен std и в заголовке массива, а в массиве управляемого класса CLI.

с этим классом, вы можете создать массив любого ранга, который вы хотите.

Следующий код ниже создает новый двухмерный массив из 2 строк и 3 столбца и типа int, и я называю it "arr":

array<int, 2>^ arr = gcnew array<int, 2>(2, 3);

Теперь вы можете получить доступ к элементам в массиве, по имени и написать только квадратные скобки [], а внутри них добавить строку и столбец и отделить их с запятой ,.

Следующий код ниже относится к элементу во второй строке и первом столбце массива, который я уже создал в предыдущем коде выше:

arr[0, 1]

только для записи эта строка должна прочитать значение в этой ячейке, т. е. получить значение в этой ячейке, но если вы добавите знак =, вы собираетесь записать значение в этой ячейке, то есть установить значение в этой ячейке. Вы также можете использовать операторы + =, - =, * = и / =, только для чисел (int, float, double, __int16, __int32, __int64 и т. Д.), Но вы уже знаете это.

Если ваш проект не CLI, вы можете использовать неуправляемый класс массива пространства имен std, если вы #include <array>, конечно, но проблема в том, что этот класс массива отличается от массива CLI. Создать массив такого типа аналогичен CLI, за исключением того, что вам придется удалить знак ^ и gcnew. Но, к сожалению, второй параметр int в скобках <> указывает длину (т. Е. Размер) массива, а не его ранг!

Невозможно указать ранг в этом типе массива, ранг - это CLI массив.

std array ведет себя как обычный массив в c ++, который вы определяете с помощью указателя, например int*, а затем: new int[size] или без указателя: int arr[size], но в отличие от Обычный массив c ++, std array предоставляет функции, которые вы можете использовать с элементами массива, такие как fill, begin, end, size и т. д., но обычный массив ничего не предоставляет.

Но все же std-массив являются одномерными массивами, такими как обычные c ++-массивы. Но благодаря решениям, которые другие ребята предлагают о том, как вы можете превратить обычный двумерный массив c ++ в двумерный массив, мы можем адаптировать те же идеи к std-массиву, например. в соответствии с идеей Мехрдада Афшари, мы можем написать следующий код:

array<array<int, 3>, 2> array2d = array<array<int, 3>, 2>();

Эта строка кода создает «жуткий массив», который является одномерным массивом, который каждая из его ячеек является или указывает на другой одномерный массив.

Если все одномерные массивы в одномерном массиве равны по длине / размеру, то вы можете рассматривать переменную array2d как реальный двумерный массив, плюс вы можете использовать специальные методы для обрабатывать строки или столбцы, зависит от того, как вы это рассматриваете, в 2D-массиве, который поддерживает std-массив.

Вы также можете использовать решение Кевина Лони:

int *ary = new int[sizeX*sizeY];

// ary[i][j] is then rewritten as
ary[i*sizeY+j]

, но если вы используете std-массив, код должен выглядеть по-другому:

array<int, sizeX*sizeY> ary = array<int, sizeX*sizeY>();
ary.at(i*sizeY+j);

И все еще имеют уникальные функции массива std.

Обратите внимание, что вы по-прежнему можете получить доступ к элементам std с помощью [] круглых скобок, и вам не нужно вызывать функцию at. Вы также можете определить и присвоить новую переменную int, которая будет вычислять и сохранять общее количество элементов в std-массиве и использовать его значение вместо повторения sizeX*sizeY

. Вы можете определить свой собственный двухмерный массив generic class и определить конструктор класса двумерных массивов для получения двух целых чисел, чтобы указать количество строк и столбцов в новом двухмерном массиве и определить функцию get, которая получает два параметра целого числа, которые обращаются к элементу в двумерном массив и возвращает его значение, и задайте функцию, которая получает три параметра, две первые являются целыми числами, которые определяют строку и столбец в двумерном массиве, а третий параметр - новое значение элемента. Его тип зависит от типа, который вы выбрали в родовом классе.

Вы сможете реализовать все это, используя либо обычный массив c ++ (указатели или без), либо массив std и используйте одну из идей что другие люди предложили и упростили использование, как массив cli, или как двухмерный массив, который вы можете определить, назначить и использовать в C #.

31
задан Nhan 3 December 2016 в 18:40
поделиться

3 ответа

Первая часть Вашего вопроса может быть решена только с HTML & CSS; необходимо будет использовать JavaScript для второй части.

Получение Маркировать Near the Radio Button

я не уверен, под чем Вы подразумеваете "рядом с": на той же строке и рядом, или на отдельных строках? Если Вы хотите все переключатели на той же строке, просто используйте поля для продвижения их независимо. Если Вы хотите каждого из них на их собственной строке, у Вас есть две опции (если Вы не хотите рисковать в float: территория):

  • Использование <br />s для разделения опций независимо и некоторого CSS для вертикального выравнивания их:
<style type='text/css'>
    .input input
    {
        width: 20px;
    }
</style>
<div class="input radio">
    <fieldset>
        <legend>What color is the sky?</legend>
        <input type="hidden" name="data[Submit][question]" value="" id="SubmitQuestion" />

        <input type="radio" name="data[Submit][question]" id="SubmitQuestion1" value="1"  />
        <label for="SubmitQuestion1">A strange radient green.</label>
        <br />
        <input type="radio" name="data[Submit][question]" id="SubmitQuestion2" value="2"  />
        <label for="SubmitQuestion2">A dark gloomy orange</label>
        <br />
        <input type="radio" name="data[Submit][question]" id="SubmitQuestion3" value="3"  />
        <label for="SubmitQuestion3">A perfect glittering blue</label>
    </fieldset>
</div>

Применение Стиля к В настоящее время Выбираемой Маркировке + Переключатель

, Разрабатывающий эти <label>, - то, почему необходимо будет обратиться к JavaScript. Библиотека как jQuery идеально подходит для этого:

<style type='text/css'>
    .input label.focused
    {
        background-color: #EEEEEE;
        font-style: italic;
    }
</style>
<script type='text/javascript' src='jquery.js'></script>
<script type='text/javascript'>
    $(document).ready(function() {
        $('.input :radio').focus(updateSelectedStyle);
        $('.input :radio').blur(updateSelectedStyle);
        $('.input :radio').change(updateSelectedStyle);
    })

    function updateSelectedStyle() {
        $('.input :radio').removeClass('focused').next().removeClass('focused');
        $('.input :radio:checked').addClass('focused').next().addClass('focused');
    }
</script>

focus и blur рычаги необходимы для создания этой работы в IE.

33
ответ дан 27 November 2019 в 22:03
поделиться

Для любого CSS3-поддерживающего браузера можно использовать , смежный одноуровневый селектор для моделирования Вашего маркирует

input:checked + label {
    color: white;
}  

MDN's , таблица совместимости браузера говорит по существу, что все текущие, популярные браузеры (Chrome, IE, Firefox, Safari), и на настольном и на мобильном, совместимы.

27
ответ дан 27 November 2019 в 22:03
поделиться

Это получит Ваши кнопки и маркировки друг рядом с другом, по крайней мере. Я полагаю, что вторая часть не может быть сделана в одной только CSS и будет нуждаться в JavaScript. Я нашел страницу, которая могла бы помочь Вам с той частью также, но у меня нет времени прямо сейчас для испытания ее: http://www.webmasterworld.com/forum83/6942.htm

<style type="text/css">
.input input {
  float: left;
}
.input label {
  margin: 5px;
}
</style>
<div class="input radio">
    <fieldset>
        <legend>What color is the sky?</legend>
        <input type="hidden" name="data[Submit][question]" value="" id="SubmitQuestion" />

        <input type="radio" name="data[Submit][question]" id="SubmitQuestion1" value="1"  />
        <label for="SubmitQuestion1">A strange radient green.</label>

        <input type="radio" name="data[Submit][question]" id="SubmitQuestion2" value="2"  />
        <label for="SubmitQuestion2">A dark gloomy orange</label>
        <input type="radio" name="data[Submit][question]" id="SubmitQuestion3" value="3"  />
        <label for="SubmitQuestion3">A perfect glittering blue</label>
    </fieldset>
</div>
5
ответ дан 27 November 2019 в 22:03
поделиться