CSS HTML, Как мешать ячейке таблицы расшириться

От snip-c.zip bitops.h:
/*
**  Bit set, clear, and test operations
**
**  public domain snippet by Bob Stout
*/

typedef enum {ERROR = -1, FALSE, TRUE} LOGICAL;

#define BOOL(x) (!(!(x)))

#define BitSet(arg,posn) ((arg) | (1L << (posn)))
#define BitClr(arg,posn) ((arg) & ~(1L << (posn)))
#define BitTst(arg,posn) BOOL((arg) & (1L << (posn)))
#define BitFlp(arg,posn) ((arg) ^ (1L << (posn)))

хорошо, давайте проанализируем вещи...

общее выражение, с которым у Вас, кажется, есть проблемы во всех них," (1L < < (posn))". Все это делает, создают маску с единственным битом на и который будет работать с любым целым типом. "posn" аргумент определяет положение, где Вы хотите бит. Если posn == 0, то это выражение оценит к:

0000 0000 0000 0000 0000 0000 0000 0001 binary.

, Если posn == 8, это оценит к:

0000 0000 0000 0000 0000 0001 0000 0000 binary.

, Другими словами, это просто создает поле 0 с 1 в указанном положении. Единственная хитрая часть находится в BitClr () макрос, где мы должны установить единственные 0 битов в поле 1's. Это выполняется при помощи 1's дополнение того же выражения, как обозначено тильдой (~) оператор.

, Как только маска создается, она относилась к аргументу, как Вы предполагаете, при помощи поразрядного и (&), или (|), и xor (^) операторы. Так как маска имеет тип долго, макросы будут работать точно также над символом, short's, интервалом или long's.

нижняя строка - то, что это - общее решение всего класса проблем. Это является, конечно, возможным и даже соответствующим переписать эквивалент какого-либо из них, макросы с явной маской оценивают каждый раз, когда Вам нужно один, но почему делают это? Помните, макроподстановка происходит в препроцессоре и таким образом, сгенерированный код отразит то, что значения считает постоянными компилятор - т.е. столь же эффективно использовать обобщенные макросы для "перестраивания колеса", каждый раз необходимо сделать побитовую обработку.

Неубежденный? Вот некоторый тестовый код - я использовал Watcom C с полной оптимизацией и не используя _cdecl, таким образом, получающееся дизассемблирование будет максимально чистым:

----[TEST.C]----------------------------------------------------------------

#define BOOL(x) (!(!(x)))

#define BitSet(arg,posn) ((arg) | (1L << (posn)))
#define BitClr(arg,posn) ((arg) & ~(1L << (posn)))
#define BitTst(arg,posn) BOOL((arg) & (1L << (posn)))
#define BitFlp(arg,posn) ((arg) ^ (1L << (posn)))

int bitmanip(int word)
{
      word = BitSet(word, 2);
      word = BitSet(word, 7);
      word = BitClr(word, 3);
      word = BitFlp(word, 9);
      return word;
}

----[TEST.OUT (демонтированный)] [конец]-----------------------------------------------

Module: C:\BINK\tst.c
Group: 'DGROUP' CONST,CONST2,_DATA,_BSS

Segment: _TEXT  BYTE   00000008 bytes  
 0000  0c 84             bitmanip_       or      al,84H    ; set bits 2 and 7
 0002  80 f4 02                          xor     ah,02H    ; flip bit 9 of EAX (bit 1 of AH)
 0005  24 f7                             and     al,0f7H
 0007  c3                                ret     

No disassembly errors

--------------------------------------------------------------------

38
задан Nakilon 10 January 2017 в 19:51
поделиться

2 ответа

Похоже, ваш синтаксис HTML неверен для ячейки таблицы. Прежде чем вы попробуете другую идею, описанную ниже, убедитесь, работает она или нет ... Вы также можете попробовать добавить это в свою таблицу: table-layout: fixed ...

<td style="overflow: hidden; width: 280px; text-align: left; valign: top; whitespace: nowrap;">
   [content]
</td>

Новый HTML

<td>
   <div class="MyClass"">
       [content]
   </div>
</td>

Класс CSS:

.MyClass{
   height: 280px; 
   width: 456px; 
   overflow: hidden;
   white-space: nowrap;
}
27
ответ дан 27 November 2019 в 03:48
поделиться
<table border="1" width="183" style='table-layout:fixed'>
  <col width="67">
  <col width="75">
  <col width="41">
  <tr>
    <td>First Column</td>
    <td>Second Column</td>
    <td>Third Column</td>
  </tr>
  <tr>
    <td>Row 1</td>
    <td>Text</td>
    <td align="right">1</td>
  </tr>
  <tr>
    <td>Row 2</td>
    <td>Abcdefg</td>
    <td align="right">123</td>
  </tr>
  <tr>
    <td>Row 3</td>
    <td>Abcdefghijklmnop</td>
    <td align="right">123456</td>
  </tr>
</table>

Я знаю, что это старая школа, но попробуйте, это работает.

может также захотеть добавить это:

<style>
  td {overflow:hidden;}
</style>

Конечно, вы бы поместили это в отдельную ссылку таблица стилей, а не встроенная ... не так ли;)

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